一、sql单词认识
1、char和varchar的区别
char:固定长度,检索快但浪费空间char(20) (zhangsan )
varchar:可变长度,检索慢但节省空间 varchar(20)(zhangsan)
2、表常用单词
unsigned:无符号
zerofill:0填充
auto_increment:自增
default:默认
comment:注释
primary key:唯一主键
二、sql命令
1、开启服务
net start mysql
net stop mysql
2、连接数据库
mysql -uroot -p123456
mysql -h localhost -u root -p 123456
3、修改密码
update user set password=password(‘1234’) where user=‘root’ flush privileges;
4、退出
exit
三、数据库增删改查
1、查看数据库
SHOW DATABASES;
2、创建数据库
CREATE DATABASE IF NOT EXISTS school;
3、使用数据库
USE school;
4、显示所有表
SHOW TABLES;
5、删除数据库
DROP DATABASE school;
四、数据表增删改查
1、创建数据表
CREATE TABLE student(
studentNo INT(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,
StudentName VARCHAR(20) NOT NULL,
sex CHAR(2) DEFAULT ‘男’ NOT NULL,
age INT(3) UNSIGNED ZEROFILL,
score INT(3) UNSIGNED NOT NULL,
bornDate DATETIME COMMENT ‘出生日期’
)ENGINE=INNODB CHARSET=utf8
2、复制表
CREATE TABLE stu (SELECT studentNo,stu_name FROM student);
3、显示表结构
DESC student;
4、显示表创建语句
SHOW CREATE TABLE student;
5、删除表
DROP TABLE student;
6、修改表
(1)修改表名
ALTER TABLE student RENAME AS stu;
(2)添加字段
ALTER TABLE stu ADD phone VARCHAR(11);
(3)修改字段类型
ALTER TABLE stu MODIFY phone CHAR(11) NOT NULL;
(4)同时修改字段名和类型
ALTER TABLE stu CHANGE phone telphone VARCHAR(11);
(5)删除字段
ALTER TABLE stu DROP telphone;
五、数据增删改查
1、增加:insert into 表名(字段1,字段2) values(值1,值2),(值1,值2);
insert into student(name,sex,phone) values(‘李四’,‘男’,12345678910),(‘王五’,‘女’,12345678910),(‘赵六’,‘男’,12345678910);
2、修改:update 表名 set 字段1=?,字段2=? where 条件
UPDATE result SET studentNo=3,score=100 WHERE subjectName=‘数据库’;
3、删除:delete from 表名 where 条件
DELETE FROM result WHERE resultId=2;
4、删除所有数据
DELETE FROM student; #主键不会重置,接着上次删除的开始
TRUNCATE TABLE student; #主键会从头1开始
5、查询 select [distinct去重复]字段 from 表名[where条件] [group by 字段] [having 条件] [order by 字段] [limit 数值,数字];
(1)查询所有数据
SELECT * FROM student ;
查询部分列
SELECT studentName as 姓名,sex,phone FROM student;
(2)模糊查询 like ‘%模糊多个字符’,’_模糊一个字符’
SELECT studentName FROM student WHERE studentName LIKE ‘李%’;
SELECT studentName FROM student WHERE studentName LIKE ‘李_’;
SELECT * FROM student WHERE address LIKE ‘%北京%’;
(3)过滤:(where后边不能有聚合函数,having和select后边可以有)
分组:gruop by
分组后的过滤:having
排序:order by 字段 desc(降序)/asc(升序)
分页查询:limit 偏移量(下标从0开始),条数
#学生表中从0开始显示5条数据
SELECT * FROM student LIMIT 0,5; #等价于limit 5;
#页码(page) 条数(pagesize)
limit (page-1)*pagesize,pagesize
(4)函数的应用
#获取当前时间
SELECT NOW();
#返回两个日期之间间隔的天数
SELECT DATEDIFF(NOW(),‘2008-8-8’);
#某天加上5天后的日期
SELECT ADDDATE(‘2018-11-28’,5);
#查询student表中的人名,每条数据人名前加"姓名:"
SELECT CONCAT(‘姓名:’,stu_name) AS 姓名 FROM student;
(5)between and关键字
#查询课时在100-120之间的课程信息
SELECT * FROM subject WHERE classHour BETWEEN 110 AND 120;
#and 和 or