MySQL
1、sql语句规范
sql是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。
在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持sql。
<1> 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;
<2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。
<3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。
SELECT * FROM tb_table WHERE NAME="YUAN";
<4> 注释:单行注释:--
多行注释:/*......*/
<5>sql语句可以折行操作
2、数据类型
2.1 数值类型
2.2 无符号类型
=========有符号和无符号tinyint========== #tinyint默认为有符号 MariaDB [db1]> create table t1(x tinyint); #默认为有符号,即数字前有正负号 MariaDB [db1]> desc t1; MariaDB [db1]> insert into t1 values -> (-129), -> (-128), -> (127), -> (128); MariaDB [db1]> select * from t1; +------+ | x | +------+ | -128 | #-129存成了-128 | -128 | #有符号,最小值为-128 | 127 | #有符号,最大值127 | 127 | #128存成了127 +------+ #设置无符号tinyint MariaDB [db1]> create table t2(x tinyint unsigned); MariaDB [db1]> insert into t2 values -> (-1), -> (0), -> (255), -> (256); MariaDB [db1]> select * from t2; +------+ | x | +------+ | 0 | -1存成了0 | 0 | #无符号,最小值为0 | 255 | #无符号,最大值为255 | 255 | #256存成了255 +------+
3、数据库操作
1.创建数据库(在磁盘上创建一个对应的文件夹) create database [if not exists] db_name [character set xxx] 2.查看数据库 show databases;查看所有数据库 show create database db_name; 查看数据库的创建方式 3.修改数据库 alter database db_name [character set xxx] 4.删除数据库 drop database [if exists] db_name; 5.使用数据库 切换数据库 use db_name; -- 注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换 查看当前使用的数据库 select database();
4、数据表操作
4.1 创建表
-- 语法 CREATE TABLE tab_name( field1 type[完整性约束条件], field2 type, ... fieldn type )[character set xxx];
示例:
CREATE TABLE employee( id int primary key auto_increment , name varchar(20), gender bit default 1, birthday date, department varchar(20), salary double(8,2) unsigned, resume text );
4.2 查看表信息
desc tab_name 查看表结构 show columns from tab_name 查看表结构 show tables 查看当前数据库中的所有的表 show create table tab_name 查看当前数据库表建表语句
4.3 修改表结构
(1)增加列(字段) alter table tab_name add [column] 列名 类型[完整性约束条件][first|after 字段名]; #添加多个字段 alter table users2 add addr varchar(20), add age int first, add birth varchar(20) after name; (2)修改一列类型 alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名]; (3)修改列名 alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件][first|after 字段名]; 4)删除一列 alter table tab_name drop [column] 列名; (5)修改表名 rename table 表名 to 新表名; (6)修该表所用的字符集 alter table student character set utf8;
4.4 删除表
drop table tab_name;
5、表记录操作
5.1 增加表记录
<1>插入一条记录: insert [into] tab_name (field1,filed2,.......) values (value1,value2,.......); <2>插入多条记录: insert [into] tab_name (field1,filed2,.......) values (value1,value2,.......), (value1,value2,.......), ... ; <3>set插入: insert [into] tab_name set 字段名=值
示例:
INSERT employee (name,gender,birthday,salary,department) VALUES ("alex",1,"1985-12-12",8000,"保洁部"), ("egon",1,"1987-08-08",5000,"保安部"), ("yuan",1,"1990-06-06",20000,"教学部"); INSERT employee VALUES (8,"女神",0,"1992-02-12","教学部",7000,""); INSERT employee SET name="wusir",birthday="1990-11-11";
5.2 修改表记录
update tab_name set field1=value1,field2=value2,......[where 语句]
示例:
update employee_new set birthday="1989-10-24" WHERE id=1; --- 将yuan的薪水在原有基础上增加1000元。 update employee_new set salary=salary+4000 where name='yuan';
5.3 删除表记录
方式1: delete from tab_name [where ....] 方式2: truncate table emp_new; /* 如果不跟where语句则删除整张表中的数据 delete只能用来删除一行记录 delete语句只能删除表中的内容,不能删除表本身,想要删除表,用drop TRUNCATE TABLE也可以删除表中的所有数据,词语句首先摧毁表,再新建表。此种方式删除的数据不能在 事务中恢复。 */
示例:
删除表中名称为’alex’的记录。 delete from employee_new where name='alex'; 删除表中所有记录。 delete from employee_new; 注意auto_increment没有被重置:alter table employee auto_increment=1;
6、查询表记录
select * from tab_name : 显示所有的记录的所有字段信息 select [distinct] filed,filed2,..... from tab_name where 子句 group by 分组 key : 分组条件 having 子句 : 过滤 order by limit 查询 每一个省份的平均工资 select city,avg(salary) from emp group by city; 查询 平均工资大于8000的省份的名称 select city,avg(salary) from emp group by city having avg(salary) > 8000
7、多表查询
内连接查询: select * from emp inner join dep on emp.dep_id=dep.id; 左外连接查询: select * from emp left join dep on emp.dep_id=dep.id;
8、完整约束
主键约束: primary key : 非空(not null )且 唯一 (unique) 外键约束(关联字段):