对表进行操作之前我们先创建一个表
CREATE TABLE students(
id VARCHAR(200) COMMENT '学生id',
name VARCHAR(20) COMMENT '学生姓名',
gender VARCHAR(1) COMMENT '学生性别');
对数据库字段的操作
1.添加列
ALTER TABLE students ADD 字段名 类型;
ALTER TABLE students ADD phone INT;
2.队列的类型进行修改
ALTER TABLE students MODIFY 字段名 新的类型;
ALTER TABLE students MODIFY id INT;
通过DESC 表名; 查看表结构
3.修改字段名 和 类型
ALTER TABLE students CAHNGE 旧的字段名 新的字段名 类型;
ALTER TABLE students CHANGE name Name varchar(20);
4.删除列
ALTER TABLE students DROP 字段名;
ALTER TABLE students DROP phone;
5.修改表名
a. RENAME TABLE 旧表名 TO 新表名;
RENAME TABLE students TO stu;
b. ALTER TABLE 旧表名 RENAME TO 新表名;
ALTER TABLE stu RENAME TO stus;
6.删除表
drop table 表名;
7.截断表 删除之后 创建一个新表
truncate table 表名;
8.复制表
CREATE TABLE 复制的表 LIKE 被复制的表
CREATE TABLE stus_copy LIKE stus;
被复制的表如果不在当前数据库使用.操作符
CAEATE TABLE 复制的表 LIKE 数据库.被复制的表;
对数据库中数据的操作(增删改查)
1.INSERT 插入(插入多条数据用逗号隔开)
INSERT INTO 数据库表 (要插入数据的字段名) VALUES(插入数据)
INSERT INTO stus (id,Name,gender) values (1,'kiana','Female'),(2,'xiao','Male'),(3,'abeido','Male');
2.DELETE 删除
DELETE FROM 表名 WHERE 条件;
DELETE FROM stus WHERE id=3;
3.UPDATE 修改
UPDATE 表名 SET WHERE 条件;
UPDATE stus SET name= 'XIAO' WHERE id =2;
4.INSERT 查询
查询所有--SELECT * FROM stus;
条件查询--SELECT * FROM stus WHERE id =2;
查询单个字段--SELECT id FROM stus;
查询单个字段单条数据--SELECT Name FROM stus WHERE id=1;
查询数据是字段名Name字段数据显示为小写--SELECT LOWER(Name) FROM stus;
将显示的字段名改为name-- SELECT LOWER(Name) AS name FROM stus;
剔除重复行--distinct
select distinct from stus;
剔除单个字段一样的数据
select distinct 字段名 from stus;
数据的备份(mysqldump)
数据备份所用到的参数(mysqldump在命令提示窗口使用,不在数据库中使用)
参数名 | 简写 | 含义 |
-host | -h | 主机地址 |
-post | -P | 端口号 |
-user | -u | 用户名 |
-password | -p | 密码 |
-database | -B | 指定要复制的数据库 |
--all-databases | -A | 备份mysql服务器上的所有数据库 |
--no-data | -d | 不备份数据,默认为备份数据 |
--comments | -i | 是否有信息备注,默认是打开的,使用—skip-comments关闭 |
1.备份数据库中的表
mysqldump -uroot -p 数据库名 要备份的表名默认为所以(多个是逗号隔开)>路径\xxx.sql
mysqldump -uroot -p 1111 stus >d:\kfm\3.0.sql
2.只备份表结构不备份数据
mysqldump -uroot -p -d 1111 stus > d:\kfm\3.0.sql
3.备份多个数据库
mysqldump -uroot -p --databases 数据库1,数据库2,... > 路径
4.备份所有数据库
mysqldump -uroot -p --all -databases >路径
5.将查询的结果保存到文件中(-e为指定要运行的SQL语句)
mysql -uroot -p -e "select * from 1111.stus" > d:\kfm\3.0.txt
mysql -uroot -p -e "update 表名 set 修改的数据 where 条件" >路径
6.还原数据结构和数据
在数据库中使用source 地址(生成sql的地址)
source D:\kfm\3.0.sql;(在mysql中执行)
mysql -uroot -p 新数据库名<路径(D:\kfm\3.0.sql)
条件查询进阶1
1.between 条件1 and 条件2;
select * from 表 where 字段名 between 条件1 and 条件2;
2.and (都符合)
select * from where 字段名 条件 and 条件 and.......;
3,or (否和1个即可)
select * from where 字段名 条件 or 条件 or ......;
4.in(如果在就能查出)
select * from where 字段名 in ();
5.对于NULL的判断
select * from where 字段名 is null;(判断为空)
select * from where 字段名 is not null;(判断为非空)
6.算术运算
select 字段1 + 字段2 from 表;
update 表 set 字段=字段+值 where 条件;
7.模糊查询(%占位符)
select * from 表 where 字段名 like “%查询的关键字%”;(只要被查询的数据含有关键字都能查到);
select * from 表 where 字段名 like “查询的关键字%”;(只能查询以关键字开头的数据);
select * from 表 where 字段名 like “%查询的关键字”;(只能查询以关键字结尾的数据);
8.逻辑运算(> = <)
select *from 表 where 字段名 > value;
9.排序(order by)
select * from 表 where order by 字段 ASC(升序);
select * from 表 where order by 字段 DESC(降序);
select * from 表 where order by 字段1 DESC(降序),字段 ASC(升序);(字段1进行降序数据相等时,用字段2的数据进行升序排列)
10.分页查询 LIMIT
用于限制返回的行数,而OFFSET
用于指定起始行的偏移量。
select * from 表 limit A,B;(A为从第A-1个数据开始显示,B为显示的条数)
select * from 表 limit A offset B;(limit控制每页显示几条数据,offset 用来控制显示第几页(偏移量))
OFFSET = (页数 - 1) * 每页行数
例如 每页显示10行,显示第四页
select * from 表 limit 10 offset 30;
11.单行函数
length();显示字段长度
select length(字段名) from 表;
concat(A,B);字符串拼接
select concat(A,B ) as 起别名 from 表 where 条件;
lower();转为小写 upper();转为大写
select concat(lower(A),upper(B)) from 表;