Mysql终端Terminal操作

打印 上一主题 下一主题

主题 537|帖子 537|积分 1611

datebase管理

1.创建数据库-create
  1. 语法:create database 数据库名 character set 编码
  2. # 注意:默认会存在四个数据库,其数据库中存储的是mysql数据库服务器的配置的数据
  3. 示例:create database firstDB character set utf8;
复制代码
2.查看所有数据库-show
2.1.查看创建语句(也可看编码)
  1. 语法:show create database 数据库名;
复制代码

2.2、查看数据库服务器中的所有数据库
  1. 语法:show databases;
复制代码

3.修改数据库-alter
  1. 修改编码:
  2.     语法:alter database 数据库名称 character set 编码;
  3.     例如:alter database mydb_01 character set gbk;
  4.     查看:show create database mydb_01;
复制代码


4.使用数据库-use
  1. 语法:use 数据库名称;
  2. 例如:use mydb_01;
复制代码
5.查看当前使用的数据库
  1. 语法:select database();
  2. 例如:select database();
复制代码
6.删除数据库-drop
  1. 语法:drop dastabase 数据库名称;
  2. 例如:drop database mydb_01;
复制代码

table管理

1.创建数据库表

语法
  1. create table 表名称(
  2.     字段名称 数据类型[约束],
  3.     字段名称 数据类型[约束],
  4.     ...
  5. );
复制代码
示例:
  1. create table user(
  2.     id int,
  3.     name varchar(15),
  4.     age int
  5. );
复制代码

数据库类型
  1. 常用的类型:
  2.     int:整数型
  3.     varchar:可变字符串
  4.     double:浮点型,例如(double(5,2),长度为5,其中必须包含两位小数)
  5.     date:日期(只有年月日)
  6.     timestamp:时间戳(年月日,时分秒都有)
  7. java和mysql类型对比
  8.     mysql类型                                     java的类型
  9.     int                                         java.lang.Integer
  10.     double                                      java.lang.Double
  11.     char                                        java.lang.String
  12.     varchar                                     java.lang.String
  13.     text                                        java.lang.String
  14.     blob                                        java.lang.byte[]
  15.     date                                        java.sql.Date
  16.     time                                        java.sql.Time
  17.     timestamp                                   java.sql.TimeStamp
复制代码
约束
  1. 定义:
  2.     约束就是对字段的某种性质的一种约束
  3. 类型:
  4.     主键约束:primary key
  5.     外键约束:(下节课学)
  6.     非空约束:not null
  7.     唯一性约束:unique
  8.     默认值约束:default 默认值(指的是没有插入此字段时有默认值,当插入此字段时,即使值是null他也不会有默认值,即值为null)
  9. 主键约束:
  10.     主键是每一条记录的唯一性标识,一般没有实际意义,特点:非空 唯一
  11.     语法:字段名称 字段类型 primary key
  12.     注意:如果主键是int型 我们可以将其定义成 auto_increment(自增长)
  13.     示例:id int primary key auto_increment
  14. 例如:
  15.     create table user(
  16.         id int primary key auto_increment,
  17.         username varchar(20) not null,
  18.         password varchar(20) not null,
  19.         gender varchar(20),
  20.         age int default 25,
  21.         email varchar(50) not null unique,
  22.         salary double(8,2),
  23.         state int default 0,
  24.         role varchar(10) default 'VIP',
  25.         registTime  timestamp
  26.     );
复制代码
2.查看表

2.1.查看当前数据库中的所有表
  1. 语法:show tables;
复制代码

2.2.查看指定表的创建语句
  1. 语法:show create table 表名称;
复制代码

 
 
2.3.查看表结构
  1. 语法:desc 表名称;
复制代码

3.删除表
  1. 语法:drop table 表名称;
复制代码
4.修改表

4.1.修改表名称
  1. 语法:rename table 旧名称 to 新名称;
  2. 例如:rename table user to newuser;
复制代码

4.2.修改表的编码
  1. 语法:alter table 表名称 character set 编码;
  2. 例如:<br>  alter table newuser character set gbk;<br>  ALTER TABLE hq_message CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
复制代码
5.新增字段
  1. 语法:alter table 表名称 add 字段名称 数据类型 [约束];
  2. 例如:alter table newuser add idcart varchar(18) unique;
复制代码

6.删除字段
  1. 语法:alter table 表名称 drop 字段名;
  2. 例如:alter table newuser drop idcart;
复制代码


7.修改字段名称
  1. 语法:alter table 表名称 change 旧名称 新名称 数据类型
  2. 例如:alter table newuser change gender sex varchar(2);
复制代码

8.修改数据类型
  1. 语法:alter table 表名称 modify 字段名称 新的数据类型;
  2. 例如:alter table newuser modify sex int;
复制代码

数据操作

注意
  1. select @@tx_isolation;--查看mysql的事物隔离级别
  2. show variables like 'character%';--查看mysql数据库的当前编码
  3. set character_set_client = gbk;--设置客户端编码
  4. set character_set_results = gbk;--设置结果集的编码
复制代码
1.插入数据
  1. 语法:insert into 表名(字段名1,字段名2,...字段名n) valuse(值1,值2,...值n);
  2. 注意:
  3.     (1):如果主键是auto_increment的,那么,主键列的值可以写成null或者主键字段和主键值省略不写
  4.     (2):如果插入的数据是全数据的话,那么字段名称可以省略
  5. 例如:
  6.     insert into newuser(id,username,password,sex,age,email,salary,state,role,registtime) values(1,'zhangsan','123',1,25,'zs@itcast.cn',100,0,'teacher','2015-10-10 12:35:50');
复制代码

 
 
2.修改数据
  1. 语句:update 表名称 set 字段名称1=值1,字段名称2=值2,....字段名称n=值n[where条件语句];
  2. 注意:如果不写where条件子句的话 会把表中的所有相应字段的数据全部修改
  3. 例如:update newuser set password=111 where id=1;
复制代码

 
 
3.删除数据
  1. 语法:delete from 表名 where条件句;
  2. 注意:如果不写where条件句的话 那么会把表中的数据全部删掉
复制代码
  1. delete from newuser和drop table user的区别?
  2.     前者是删除数据,但是表的结构还在
  3.     后者是把整个表全部删掉<br>
  4. truncate table newuser;和delete from newuser;区别?
  5.     前者一次性将表摧毁,然后在新建表结构
  6.     后者是一条一条的将数据删除
复制代码
4.查询数据

4.1.全部查询
  1. 语法:select * from 表名;
复制代码

 
 
4.2.查询部分数据
  1. 语法:select 字段名称1,字段名称2... from 表名称;
复制代码

 
 
4.3.去重查询
  1. 语法:select distinct 字段名称 from 表名;
复制代码

 
 
4.4.聚合函数
  1. 注意:聚合函数尽量不要和其他字段混合使用
复制代码
4.41.计数函数
  1. 名称:count():统计当前表中有多少条数据
  2. 用法:select count(* 或 者字段名) from 表名;
  3. 注意:当使用字段进行统计时,如果该列中有null值,则不算一条记录
复制代码

 
 
4.4.2.求和函数
  1. 名称:sum()
  2. 用法:select sum(salary) from 表名;
  3. 注意:如果要求和的字段中有null则把null当作0进行求和
复制代码

 
 
4.4.3.最大值函数
  1. 名称:max()
  2. 用法:select max(salary) from user;
  3.    
  4. 注意:null不作为数值比较
复制代码

 
 
4.4.4.最小值函数
  1. 名称:min()
  2. 用法:select min(salary) from user;
  3. 注意:null不作为数值比较
复制代码

 
 
4.4.5.平均值
  1. 名称:avg()
  2. 用法:select avg(salary) from user;
  3. 注意:如果字段中有null值,在相加时当作了0或者根本就没有算数,在相除的时候没有算此条记录
复制代码

 
 
4.5.运算查询
  1. 语法:select username,salary+1000 from user;
  2. 注意:可进行数学运算
  3.     null在进行运算的时候还是null
复制代码

 
 
  1. ifnull函数
  2.     作用:判断是否为null
  3.     语法:select username,ifnull(salary,0)+1000 from user;
复制代码

 
 
  1. as函数
  2.     作用:给字段起别名
  3.     语法:字段名 as 别名
  4.     注意:as可以省略不写
复制代码

 
 
4.6.排序查询
  1. 语法:order by 字段名;
  2. 注意:
  3.     默认升序(asc):order by 字段名 asc;
  4.     降序(desc):order by 字段名 desc;
  5. 例如:select * from user order by salary;
复制代码

 
 
4.7.条件查询

4.7.1.单一条件查询
  1. 语法:select * from 表名 where 字段名称='字段值';      
  2. 注意:可以使用的运算符:>   <   >=    <=  !=
  3. 例如:select * from user where username='zhangsan';
复制代码

 
 
4.7.3.范围查询
  1. 语法:select * from 表名 where 字段名1='字段值' and 字段名2='字段值'......;
  2. 注意:逻辑连接关键字可以使用and、or、not;优先级:and  > or
  3. 例如:
  4.     select * from user where role='技术部' and sex='女';
  5.     select * from user where role='teacher' or role='财务部';
复制代码

 
 
4.7.4.枚举查询 
  1. 语法:select * from 表名 where 要查询的字段 between ... and ...
  2. 注意:即包左又包右
复制代码
  1. 语法:in(枚举字段);---满足枚举字段的就会被查出来
复制代码

 
 
4.7.5.模糊查询
  1. 语法:not in(枚举字段);排除满足枚举字段的所有字段
复制代码
4.7.6.空/非空查询
  1. 语法:like '数据';
  2. 用法:
  3.     select * from user where username like '张';---全名叫张的
  4.     select * from user where username like '张%';---姓张的
  5.     select * from user where username like '%张';---最后一个字是张的
  6.     select * from user where username like '%张%';---包含张的
  7.     select * from user where username like '_张%';---第二个字是张的
  8. 注意:%:代表多个任意字符    _代表任意一个字符
复制代码

 
 
4.8.分组查询
  1. 语法:
  2.     is null;---某字段为null
  3.     is not null;---某字段不为null
复制代码

 
 
4.9.分页查询
  1. 语法:select 字段 from 表名 group by 字段 [having(条件)] 表达式;
复制代码
5.sql语句的书写顺序与执行顺序
  1. limit 3,5
复制代码


多表连查

1.准备数据
  1. 书写顺序:select 字段 from 表名 where 条件 group by 字段 having 条件 order by 字段;
  2. 执行顺序:from   >   where   >   group by   >   having   >  select  >  order by
复制代码
1.1.内连接
内连接就是在查询的时候数据之间的必须一一对应才能查出
  1. 创建customer表
  2.     id 整型 主键 自动增长,
  3.     姓名 字符串20 不能为空,
  4.     电话 字符串20 不能为空,
  5.     等级 字符串20 默认为铜牌会员
  6.     create table customer(
  7.       id int primary key auto_increment,
  8.       name varchar(20) not null,
  9.       tel varchar(20) not null,
  10.       grade varchar(20) default '铜牌会员'
  11.     );
  12. 创建orders表
  13.     id 整型 主键 自动增长,
  14.     订单编号 字符串30 唯一 不能为空,
  15.     订单提交时间 时间戳类型,
  16.     客户id 整型 外键(与客户主键对应)
  17.     create table orders(
  18.         id int primary key auto_increment,
  19.         ocode varchar(30) unique not null,
  20.         createTime timestamp,
  21.         cid int not null,
  22.         constraint customer_orders foreign key orders(cid)   references customer(id)
  23.     );
  24.     customer表插入数据
  25.         insert into customer values(null,'张三','13825545454','银牌会员');
  26.         insert into customer values(null,'李四','13820145999','银牌会员');
  27.         insert into customer values(null,'王五','17745589215','金牌会员');
  28.     orders表插入数据
  29.         insert into orders values(null,'jd001',null,1);
  30.         insert into orders values(null,'jd002',null,2);
  31.         insert into orders values(null,'jd003',null,1);
  32.         insert into orders values(null,'jd004',null,2);<br>
  33. 创建goods表
  34.     id 整型 主键 自动增长,
  35.     gcode 字符串20 唯一 非空,
  36.     gname 字符串30 非空,
  37.     gprice 浮点型(8,2) 非空,
  38.     producttime 日期类型
  39.     create table goods(
  40.         id int primary key auto_increment,
  41.         gcode varchar(20) unique not null,
  42.         gname varchar(30) not null,
  43.         gprice double(8,2) not null,
  44.         producttime date
  45.     );
  46.     插入数据
  47.         insert into goods values(null,'DQ0012','电视机',2999,'2014-12-25');
  48.         insert into goods values(null,'DQ0013','洗衣机',1999,'2014-11-25');
  49.         insert into goods values(null,'DQ0014','空调扇',235,'2014-5-21');
  50.         insert into goods values(null,'SJ0012','iphone5',3288,'2014-10-27');
  51.         insert into goods values(null,'SJ0013','魅族MX5',1799,'2015-4-11');
  52.         insert into goods values(null,'RY0012','运动鞋',450,'2013-8-19');<br>
  53. 创建orders_goods关系表
  54.     id 整型 主键 自动增长,
  55.     oid 整型 非空,
  56.     gid 整型 非空
  57.     create table orders_goods(
  58.         id int primary key auto_increment,
  59.         oid int not null,
  60.         gid int not null,
  61.         constraint orders_goods_rel foreign key orders_goods(oid) references orders(id),
  62.         foreign key orders_goods(gid) references goods(id)
  63.     );
  64.     插入数据
  65.         insert into orders_goods values(null,1,1);
  66.         insert into orders_goods values(null,1,3);
  67.         insert into orders_goods values(null,1,5);
  68.         insert into orders_goods values(null,2,1);
  69.         insert into orders_goods values(null,2,2);
  70.         insert into orders_goods values(null,3,5);
  71.         insert into orders_goods values(null,4,5);
  72.         insert into orders_goods values(null,4,6);
复制代码
  1. 显示内连接
  2.     语法:select 字段 from 表1 inner join 表2 on 条件
  3.     例如:
  4.         内连接需求:查询所有的用户的订单中的商品信息
  5.         select * from customer c inner join orders o on c.id=o.cid inner join orders_goods o_g on o_g.oid=o.id inner join goods g on o_g.gid=g.id;
  6.         查询客户表连接到订单表,条件是客户表中的主键id等于订单表中外键;因为订单表和商品表之间的关系是多对多,所以需要介入中间表,
复制代码

 
 
1.2.外连接
  1. 隐式内连接
  2.     语法:select 字段 from 表1,表2,... where 条件
  3.     注意:一般情况下 n张表需要最少 n-1个条件可以保证数据不冗余
  4.     例如:内连接需求:查询所有的用户的订单中的商品信息
  5.         select * from customer c,orders o,orders_goods og,goods g where c.id=o.cid and o.id=og.oid and og.gid=g.id;
复制代码

 
 
  1. 左外连接
  2.     保证左表中的数据全部显示,右表中的数据仅仅显示与左表有关联的,没有数据的会显示null
  3.     语法:select 字段 form 左表 left [outer] join 右表 on 条件
  4.     例如:左外连接需求:查询所有的用户的信息,如果该用户有订单信息一起显示
  5.         select * from customer c left join orders o on c.id=o.cid;
复制代码

 
 
1.3.子查询
查出的数据可以当作一个表看待
  1. 右外连接
  2.     保证右表中的数据全部显示,左表中的数据仅仅显示与右表有关联的,没有数据会显示null
  3.     语法:select 字段 from 左表 right [outer] join 右表 on 条件
  4.     例如:有外连接需求:查询所有的商品信息,如果该商品有所属的订单则一起显示订单信息
  5.         select * from orders o right join orders_goods og on o.id=og.oid right join goods g on og.gid=g.id;
复制代码

 
 
数据库的备份与恢复
  1. select * from customer where id=(select cid from orders where id=2);
复制代码
数图的作用:
  1. 备份:
  2.     mysqldump -u 用户名 -p 数据库名称  表名[表名]>磁盘路径   --回车
  3.     password:*****     --回车      形成一个.sql的文件
  4. 恢复:
  5.     mysql -u 用户名 -p 数据库名称(指定导入到那一个数据库)<磁盘路径   --回车
  6.     password:*****   --回车
  7. 注意:
  8.     如果指定的数据库不存在,则失败;需要自己先创建数据库
复制代码
删除视图
  1. 语法:
  2.     CREATE USER 用户名@地址 IDENTIFIED BY '密码';
  3.     CREATE USER user1@localhost IDENTIFIED BY ‘123’;
  4.     CREATE USER user2@’%’ IDENTIFIED BY ‘123’;
  5.     user1用户只能访问localhost
  6.     user2用户可以远程访问
复制代码
 

来源:https://www.cnblogs.com/JimmyThomas/p/16348814.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表