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)
外键约束(关联字段):