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 数据库名;
Java基础26--sql规范&sql的分类&sql的分类
所在文件目录

例如:
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
Java基础26--sql规范&sql的分类&sql的分类
Java基础26--sql规范&sql的分类&sql的分类

##mysqldump是个命令,在mysql安装目录下的bin文件夹里
Java基础26--sql规范&sql的分类&sql的分类