Java基础26--sql规范&sql的分类&sql的分类
Java基础26–Mysql
sql规范
SQL语句的规范:
-
1、mysql对于SQL语句不区分大小写,SQL语句关键字尽量大写
show databases;
SHOW DATABASES;
至于表中的数据是否区分大小写,和字符编码,和数据类型,和校对规则有关。
ci:不区分大小写 (case ignore) mysql一般默认ci
cs:区分大小写
bin:最严格,区分大小写,以二进制值存储 -
2、在sql语句中的值,除了数值类型(整数、小数),其他的类型,都使用’ ’ (单引号)引起来。
例如:select * from t_employee where gender =‘男’; -
3、如果在SQL中需要给字段取别名时,可以给别名加" "。(双引号)
如果别名中间没有空格,"“可以省略,如果有空格,不能使用”" -
4、所有标点符号使用英文状态下的半角输入方式:输入英文符号
-
5、必须保证所有(),单引号,双引号是成对结束的
-
6、可以使用(1)#单行注释 (2)–空格单行注释(–后面必须加个空格再写注释,不然就是语句)
(3)/* 多行注释 */
命名规范:
- 1、必须只能包含 A–Z, a–z, 0–9, _共63个字符
- 2、不能在对象名的字符间留空格
例如:create database 0513 db; #错误的 - 3、避免重名
同一个DB数据库中,表不能重名,
同一张表中,字段不能重名
同一个DBMS数据库管理软件中,数据库不能重名 - 4、命名时不要使用关键字
create database database; #错误的
sql的分类
SQL:
- 1、DDL:Data Define Language
数据定义语言,即定义数据的结构。
例如:create,drop,alter - 2、DML:Data Manage Language
数据管理语言,对数据值的增、删、改、查
例如:insert,delete,update,select - 3、DCL:Data Control Language
数据控制语言,对权限、事务等的控制
例如:grant,revoke,commit,rollback等
DDL
一、DDL
(一)操作database的SQL
1、查看当前mysql数据库管理软件中的所有数据库
show databases;
2、使用某个数据库
use 数据库名;
例如:use test;
3、创建一个数据库
create database 数据库名;
所在文件目录
例如:
create database library;
4、删除一个数据库
drop database 数据库名;
例如:
drop database 0513db;
(二)操作表结构的SQL
1、查看某个数据库下的所有表格
show tables;
mysql> show tables;
ERROR 1046 (3D000): No database selected//没选定数据库
解决方案有两种:
(1)先use,再操作表格
use 数据库名;
show tables;
(2)show tables from 数据库名;
2、创建某个表格
create table 【数据库名.】表名称(字段名1 数据类型,字段名2 数据类型,字段名3 数据类型);
create table 【数据库名.】表名称(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型
);
说明:如果前面有use语句,那么【数据库名.】可以省略
例如:
create table test.t_stu(
sid int,
sname varchar(20),//需要指定最长不超过多少
gender char,
birthday date,
score double
);
3、查看表结构
desc 表名称; (desc description缩写)
mysql> desc t_stu;
±---------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±------------±-----±----±--------±------+
| sid | int(11) | YES | | NULL | |
| sname | varchar(20) | YES | | NULL | |
| gender | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| score | double | YES | | NULL | |
±---------±------------±-----±----±--------±------+
类似于通过Class对象看类的信息。
4、修改表名称
rename table 旧表名 to 新表名;
alter table 旧表名 rename 新表名;
例如:
rename table t_stu to student;
alter table student rename t_stu;
5、修改表结构
(1)增加一列,增加一个字段
alter table 表名称 add 【column】 字段名 数据类型; #默认添加到最后
alter table 表名称 add 【column】 字段名 数据类型 first;
alter table 表名称 add 【column】 字段名 数据类型 after 另一个字段;
例如:增加一列,存储电话号码
alter table t_stu add tel char(11);
增加一列,存储地址,添加到第一列的位置
alter table t_stu add address varchar(50) first;
增加一列,年龄,添加到sname的后面
alter table t_stu add age int after sname;
(2)修改,字段的数据类型或位置
alter table 表名称 modify 【column】 字段名 新的数据类型;
alter table 表名称 modify 【column】 字段名 数据类型 first;
alter table 表名称 modify 【column】 字段名 数据类型 after 另一个字段;
例如:修改gender的数据类型为char(2)
alter table t_stu modify gender char(2);
例如:修改address的位置到最后一列
alter table t_stu modify address varchar(50) after tel;
(3)修改,列的名称
alter table 表名称 change 【column】 旧字段名 新的字段名 数据类型;
例如:修改列的名称tel为phone
alter table t_stu change tel phone char(11);
(4)删除一列
alter table 表名称 drop 【column】 字段名;
例如:删除地址列
alter table t_stu drop address;
6、删除整张表
drop table 表名称;
例如:drop table t_stu;
DML
二、DML:增删改查 对应程序员来说,DML的重要性要比你掌握DDL还要重要。
-
1、添加数据,往表中插入数据
插入一条数据
(1)insert into 【数据库名.】表名称 values(值列表);
要求为所有列赋值,(值列表)的类型、数量与表结构中列的类型、数量一致
(2)insert into 【数据库名.】表名称(字段列表) values(值列表);
为(字段列表)指定的列赋值,(值列表)的数量与(字段列表)的类型、数量对应,未赋值的为默认值
插入多条数据
(3)insert into 【数据库名.】表名称 values(值列表1),(值列表2)。。。;
(4)insert into 【数据库名.】表名称(字段列表) values(值列表1),(值列表2)。。。;
mysql> desc t_stu;
±---------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±------------±-----±----±--------±------+
| sid | int(11) | YES | | NULL | |
| sname | varchar(20) | YES | | NULL | |
| gender | char(1) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| score | double | YES | | NULL | |
±---------±------------±-----±----±--------±------+
5 rows in set (0.01 sec)
例如:
insert into t_stu values(1,‘张三’,‘男’,‘1995-05-09’,89.5);
mysql> insert into t_stu values(2,‘李四’,60);
ERROR 1136 (21S01): Column count doesn’t match value count at row 1’
insert into t_stu(sid,sname,score) values(2,‘李四’,60);
insert into t_stu values
(3,‘王五’,‘男’,‘1993-05-09’,80.5),
(4,‘赵六’,‘女’,‘1992-05-09’,82.5),
(5,‘钱七’,‘男’,‘1991-05-09’,82.5);
insert into t_stu(sid,sname,score) values
(6,‘李六’,60),
(7,‘李七’,70);
-
2、修改
update 【数据库名.】表名称
set 字段名1 = 新值,
字段名2 = 新值,
字段名3 = 新值
。。。
【where 条件】;
说明:如果没有where条件,说明修改所有行的这几个字段的值
例如:修改所有人的成绩为80分
update t_stu set score = 80;
例如:修改李四的成绩为40分
update t_stu set score = 40 where sname = ‘李四’;
例如:把没有填写性别的学生的性别都设置为’男’
update t_stu set gender = ‘男’ where gender <=> null;
update t_stu set gender = ‘男’ where gender is null;
例如:修改所有人的成绩都加10分
update t_stu set score = score + 10;
-
3、删除数据
delete from 表名称 【where 条件】;
例如:删除所有数据,表结构还在
delete from t_stu;
例如:删除成绩是82.5的学生
delete from t_stu where score = 82.5;
-
4、查询数据
(1)select * from 表名称;
(2)select * from 表名称 【where 条件】;
(3)select 字段列表 from 表名称 【where 条件】;
例如:查询全部
select * from t_stu;
例如:查询哪些学生没有填写性别
select * from t_stu where gender is null;
例如:查询没有填写性别的学生的姓名
select sname from t_stu where gender is null;
例如:查询没有填写性别的学生的姓名和成绩
select sname,score from t_stu where gender is null;
-
5、查询时给字段取别名
字段名 as “别名”
其中:
(1)如果"“中的别名没有空格,可以省略”"
(2)这个as可以省略
例如:查询没有填写性别的学生的姓名和成绩,查询结果sname显示姓名,score显示成绩
select sname as “姓名”,score as “成绩” from t_stu where gender is null;
select sname 姓名,score 成绩 from t_stu where gender is null;
单个数据库的备份
二、导出数据库备份
不用登录,直接在命令行
mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql
例如:
mysqldump -hlocalhost -P3306 -uroot -p123456 --database test > D:\mysqldb.sql
##mysqldump是个命令,在mysql安装目录下的bin文件夹里
本文地址:https://blog.csdn.net/renVictory/article/details/108999156
上一篇: HTTP POST GET 的使用
下一篇: MySql语句优化注意