SQL
MySQL服务的登录
mysql [-h主机名 -P端口号] -u用户名 -p密码
MySQL操作数据库命令
1.创建数据库
CREATE DATABASE 数据库名;
2.删除数据库
drop database 数据库名;
3.选择数据库
use 数据库名;
4.显示MySQL管理的所有数据库
SHOW DATABASES;
5.查看当前打开的数据库
SELECT DATABASE();
数据库数据类型
数值类型
INT或INTEGER | 4 字节 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 | |
FLOAT(8,2) | 4 字节 | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 浮点数值 | |
DOUBLE(5,1) | 8 字节 | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 浮点数 |
时间类型
类型 | 大小 (字节) | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | ‘-838:59:59’/‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
数据表操作命令(每个表必须要有主键!)
1.创建数据库
CREATE TABLE table_name (column_name column_type);
例子:
CREATE TABLE department (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
manager VARCHAR(25)
);
CREATE TABLE employee(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(25) NOT NULL,
sex ENUM('男','女') DEFAULT '男',
salary DOUBLE(8,1),
d_id INT UNSIGNED,
FOREIGN KEY(d_id) REFERENCES department(id)
)
2.删除表
DROP TABLE table_name ;
3.查看表结构
DESC table_name;
约束
1.主键约束:PRIMARY KEY
2.自增约束:AUTO_INCREMENT
3.外键约束:FOREIGN KEY
4.唯一约束:UNIQUE
5.非空约束:NOT NULL
6.默认约束:DEFAULT
7.无符号约束:UNSIGNED
常用函数
1.字符函数
concat拼接
substr截取子串
upper转换成大写
lower转换成小写
trim去前后指定的空格和字符
ltrim去左边空格
rtrim去右边空格
replace替换
lpad左填充
rpad右填充
instr返回子串第一次出现的索引
length 获取字节个数
2、数学函数
round 四舍五入
rand 随机数
floor向下取整
ceil向上取整
mod取余
truncate截断
3、日期函数
now当前系统日期+时间
curdate当前系统日期
curtime当前系统时间
/*
%Y:代表4位的年份
%y:代表2为的年份
%m:代表月, 格式为(01……12)
%c:代表月, 格式为(1……12)
%d:代表月份中的天数,格式为(00……31)
%e:代表月份中的天数, 格式为(0……31)
%H:代表小时,格式为(00……23)
%k:代表 小时,格式为(0……23)
%h: 代表小时,格式为(01……12)
%I: 代表小时,格式为(01……12)
%l :代表小时,格式为(1……12)
%i: 代表分钟, 格式为(00……59) 【只有这一个代表分钟,大写的I 不代表分钟代表小时】
%r:代表 时间,格式为12 小时(hh:mm:ss [AP]M)
%T:代表 时间,格式为24 小时(hh:mm:ss)
%S:代表 秒,格式为(00……59)
%s:代表 秒,格式为(00……59)
*/
str_to_date 将字符转换成日期
date_format将日期转换成字符
数据操作命令
插入语句
INSERT INTO table_name (field1, field2,...fieldN) VALUES (value1, value2,...valueN);
查询数据
SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N]
更新数据
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
删除数据
DELETE FROM table_name [WHERE Clause]
排序查询
ORDER BY field1(DESC OR ASC)
分组查询
GROUP BY 分组后家条件用HAVING
分页查询(limit)
SELECT * FROM score WHERE stu_id LIMIT 1,1;
#第一个参数:起始下标
#第二个参数:返回的记录个数
#使用limit实现分页查询
/*
当前显示的页数 2 index
每页显示个数 3 number
*/
SELECT * FROM score WHERE stu_id LIMIT (index-1)*number,number;
多表联查
-
SELECT * FROM student INNER JOIN teacher ON student.t_id = teacher.id; SELECT * FROM student LEFT JOIN teacher ON student.t_id = teacher.id; SELECT * FROM student RIGHT JOIN teacher ON student.t_id = teacher.id;