mysql数据库温习
mysql数据库
数据库基本操作
mysql登陆与退出
登录:mysql -u用户名 -p密码 -h地址
三种退出方法:
- exit;
- quit;
- \q;
mysql的一些解释
数据库相当于文件夹,表相当于文件
mysql三种注释符
数据库的增删改查
增:create database db1;
删:drop database db1;
改:alter database db1 charset utf8
查:show databases;#查看所有的数据库
show create database db1;查看指定的数据库
设置默认的utf8,在配置文件中:写上character_set_server = utf8
use db2
select database() #查看你当前在哪个文件夹
重命名数据库 RENAME database olddbname TO newdbname
show status; – 显示一些系统特定资源的信息,例如,正在运行的线程数量。
desc tabl_name; 显示表结构,字段类型,主键,是否为空等属性,但不显示外键。
show databases 查看这个mysql里面有多少个库
use 选择数据库
show tables 查看当前库里面所有的表
mysql> select password from user where user=’root’;
Mysql 5.7 select authentication_string,user from mysql.user;
查看当前数据库 里面的表user 用户为root的密码
alter database 数据库名 character set utf8;
表的操作
查看表结构
desc table
DESCRIBE 表名;
查看表内容
select *from table_name;
建立表
CREATE TABLE 表名 (
属性名 数据类型 [完整约束条件],
属性名 数据类型 [完整约束条件],
…
…
属性名 数据类型 [完整约束条件]
);
一个例子:
create table users(id int(7) UNSIGNED auto_increment,username varchar(30) not null,password varchar(32) not null,email varchar(40),primary key (id))engine=myisam default charset=utf8;
ENGINE=InnoDB DEFAULT CHARSET=utf8;
ENGINE 设置表的引擎 和默认的字符类型
常见的数据库引擎
InnoDB、 myisam
数据类型:
约束条件
PRIMARY KEY 标识该属性为该表的主键,可以唯一的标识对应的元组
FOREIGN KEY 标识该属性为该表的外键,是与之联系某表的主键
NOT NULL 标识该属性不能为空
UNIQUE 标识该属性的值是唯一的
AUTO_INCREMENT 标识该属性的值是自动增加,这是MySQL的SQL语句的特色
DEFAULT 为该属性设置默认值
修改表
改表名
格式:ALTER TABLE 旧表名 RENAME 新表名;
修改字段的数据类型
ALTER TABLE 表名 MODIFY 属性名 数据类型;
修改字段名:
ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;
增加字段名
ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];
删除字段
ALTER TABLE 表名 DROP 属性名;
更改表的存储引擎
ALTER TABLE 表名 ENGINE = 存储引擎名;
数据的增删改查
增
为表中所有字段添加数据:
语法: insert into 表名 (属性1,属性2,…) values (‘值1’,’值2’,…);
同时添加多条数据:
语法: insert into 表名 (属性1,属性2,…) values (‘值1’,’值2’,…),(‘值1’,’值2’,…);
删
删除表中某条数据:
语法:delete from 表名 where 条件;
删除全部数据:
语法:delete from 表名
改
update 表名 set 属性1=值1,属性2=值2 where 条件;
查
select 字段1,字段2 from 表名 where条件;
查询所有字段:
select *from users;#*代表所有字段
查询指定字段;
select username,password from users;
in查询:
select *from users where id in (1,2,8,7);
带 between and 关键字的查询:
select username from users where id not between 1 and 10;
带distinct关键字的查询:(关键词 DISTINCT 用于返回唯一不同的值)
select distinct username from users;
带ike关键字的查询:常与%一起使用
select * from users where username like “%m%” ;
下划线_匹配一个字符
select *from users where username like”xiaosha_”;
and 查询 满足多个条件
select * from users where id=1 and username=’xaioshaK’;
or查询 满足任一条件
select * from users where id=1 or username=’xiaoshaK’;
OR 和 AND 一起使用的情况
OR 和 AND 一起使用的时候,AND 的优先级高于 OR,因此二者一起使用时,会先运算 AND 两边的表达式,再运算 OR 两边的表达式。
select * from users where id >5 and password=’123456c’ or username=’xiaoshaK’;
聚合查询
COUNT() 返回某列的行数
SUM() 返回某列值的和
AVG() 返回某列的平均值
MAX() 返回某列的最大值
MIN() 返回某列的最小值
分组查询
SELECT * FROM users GROUP BY username;
+—-+———-+———-+
| id | username | password |
+—-+———-+———-+
| 2 | alex1 | 456789 |
| 1 | moon | 456789 |
| 3 | moon1 | 123456 |
+—-+———-+———-+
3 rows in set (0.01 sec)
使用LIMIT查询
select * from users limit 2,10;#从第三条开始,取十个
为表和字段取别名
select * from users as u where u.id=1;
select username as myname from users;
mysql子查询:
where型子查询
(把内层查询结果当作外层查询的比较条件)
select * from users where id in (select id from users where id>10);
from型子查询
(把内层的查询结果供外层再次查询)
select * from (select username,age from users) as agev_a where age>20
select * from (select * from users where id>=10) as age_10;
(select * from users where id>=10)查询出来的是一个集合 别名为age_10
select * from age_10
exists型子查询
(把外层查询结果拿到内层,看内层的查询是否成立)
1
0
select * from users where EXISTS (select * from users where id>1)
联合查询:
默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行
两次查询的列数必须一致
select * from users union select *,1 from news;#都是查询所有列