一. SQL 知识点
- 什么是SQL? 结构化查询语言(Structureed Query Language)简称SQL
- SQL语句分类 DDL, DML ,DQL, DCL表示的含义
答: · DDL (Data Definition 美 [,dɛfɪ'nɪʃən] Language) : 数据定义语言
· DML (Data Manipulation [mə,nɪpjʊ'leʃən] Language) : 数据操作语言
· DQL (Data Query 美 ['kwɪri] Language) : 数据查询语言
· DCL (Data Control Language) : 数据控制语言
二. SQL 基本操作
- DDL(数据定义语言)
注意 -- 数据库名命名规则:
- 第一个字符必须为下列之一:字母、下划线、#及@符号。
- 后续字符由字母、十进制数、下划线、#、$及@符号组成。
- 不能为RDBMS(数据库管理系统)的保留关键字。
- 不允许空格及其他字符。
A.DDL(数据定义语言)操作数据库:
① 创建数据库(增)
a. 不判断是否存在创建 : CREATE DATABASE 数据库名;
例如 :
CREATE DATABASE db1;
b. 判断是否存在创建 : CREATE DATABASE IF NOT EXISTS 数据库名;
例如 :
CREATE DATABASE IF NOT EXISTS db2;
c. 设置字符创建数据库 : CREATE DATABASE 数据库名 CHARACTER SET 字符集;
例如 :
CREATE DATABASE db2 CHARACTER SET gbk;
② 查看数据库(查) :
a. 查看所有数据库 : SHOW databases;
b. 查看创建数据库的定义信息:SHOW CREATE DATABASE 数据库名;
例如 :
SHOW CREATE DATABASE db2;
③ 修改数据库(改) :
a. 修改数据库字符集的格式 : ALTER DATABASE 数据库名 CHARACTER SET 字符集;
b. 代码实现修改数据库字符集的格式 : ALTER DATABASE db3 DEFAULT CHARACTER SET utf8;
④ 删除数据库(删) :
a. 删除数据库格式 : DROP DATABASE 数据库名;
b. 代码实现删除数据库 : DROP DATABASE db2;
⑤ 使用数据库 (使用) :
a. 查看正在使用的数据库 : SELECT DATABASE() ;
b. 使用/切换数据库 : USE 数据库名 ;
例如 :
USE db1 ;
B.DDL操作表 :
① 创建表 :
a. 创建表的格式 :
CREATE TABLE 表名 (
字段名1 字段类型1,
字段名2 字段类型2
);
b. 在创建表之前先列出几种常用的数据类型 :
Ⅰ. 整数数据类形
-- INT 大小 : 4字节
-- BIGINT 大小 : 8字节
Ⅱ. 浮点类数据类型
-- FLOAT 大小 : 4字节 精度 : 7位小数
-- DOUBLE 大小 : 8字节 精度 : 15位小数
Ⅲ. 字符串数据类型
-- VARCHAR 范围:0-65535
Ⅳ. 日期类数据类型 :
-- DATE (只有年日月,没有时分秒) 大小 : 3字节 格式 : YYYY
-- DATETIME 大小 : 8字节 格式 : YYYY-MM-DD
例如 : 创建t_student表包含id,name,birthday字段:
CREATE TABLE t_student (
id INT,
name VARCHAR(20),
birthday DATE
);
c. 复制表:
CREATE TABLE copy_student SELECT * FROM t_student;
如此我们便复制了一张名为copy_student的表,它包括t_student表中的内容与结构。注意:复制表的同时表的约束并不能复制过来。
只复制表结构而不复制表内容:
CREATE TABLE copy_student SELECT * FROM t_student WHERE 1=0;
只需在WHERE条件中加入一个永不为真的值即可。
② 查看表:
a. 查看某个数据库中的所有表 : SHOW TABLES ;
b. 查看表结构 : DESC 表名 ;
c. 查看创建表的SQL语句 : SHOW CREATE TABLE 表名;
③ 删除表:
a. 直接删除表:DROP TABLE 表名;
b. 判断表是否存在并删除表:DROP TABLE IF EXISTS 表名 ;
④ 修改表:
a. 添加表列:ALTER TABLE 表名 ADD 列名 类型;
例如 :
ALTER TABLE student ADD remark VARCHAR(20);
b. 修改列类型:ALTER TABLE 表名 MODIFY列名 新的类型;
例如 :
ALTER TABLE student MODIFY remark VARCHAR(100);
c. 修改列名:ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
例如 :
ALTER TABLE student CHANGE remark intro varchar(30);
d. 删除列:ALTER TABLE 表名 DROP 列名;
例如 :
ALTER TABLE student DROP intro;
e. 修改表名:RENAME TABLE 表名 TO 新表名;
例如 :
RENAME TABLE student TO student2;
f. 修改字符集:ALTER TABLE 表名 character set 字符集;
例如 :
ALTER TABLE student2 character set gbk;
三.数据库完整性
保证数据库的完整性是为了防止垃圾数据的产生,以免影响数据库的执行效率。这里简单说一些,因为毕竟不是理论类的文章,能力也有限,这里主要是整理汇总SQL语句。
分类:
1.实体完整性
保证一行数据是有效的
2.域完整性
保证一列数据是有效的
3.引用完整性
保证引用的编号是有效的
4.用户自定义完整性
保证自定义规则
实体完整性--主键约束:
PRIMARY KEY
主键列不能为空也不能重复,通常加在表的id列中。
例如:
CREATE TABLE t_student( student_id INT PRIMARY KEY, student_name VARCHAR(10), student_birthday DATETIME, student_phone INT, student_score FLOAT);
实体完整性--唯一约束:
UNIQUE
唯一约束是指给定列的值必须唯一,与主键约束不同的是它可以为空。通常加在表中不能重复的信息中,如电话号码。
例如:
CREATE TABLE t_student( student_id INT PRIMARY KEY, student_name VARCHAR(10), student_birthday DATETIME, student_phone INT UNIQUE, student_score FLOAT);
域完整性--非空约束:
NOT NULL
非空约束可以加在诸如姓名等列上。
例如:
CREATE TABLE t_student( student_id INT PRIMARY KEY, student_name VARCHAR(10) NOT NULL, student_birthday DATETIME, student_phone INT UNIQUE, student_score FLOAT);
域完整性--默认约束:
设定默认值后,可以在添加此列时不指定值,数据库会自动填充设定的默认值。
DEFAULT
例如 : 现给学生表加入性别列,默认值设为“男”,这样添加新的学生信息时如果没有填写具体的性别均会默认为男性:
CREATE TABLE t_student( student_id INT PRIMARY KEY, student_name VARCHAR(10) NOT NULL, student_sex VARCHAR(5) DEFAULT '男', student_birthday DATETIME, student_phone INT UNIQUE, student_score FLOAT);
引用完整性--外键约束:
外键约束是指在外键关联主键上强制加上一个约束,如果违反该约束,则不允许该条数据的修改。
例如 : 创建主表--班级表:
CREATE TABLE t_class( class_id INT PRIMARY KEY, class_name VARCHAR(20) UNIQUE NOT NULL); )
创建从表--学生表,并设置外键约束:
CREATE TABLE t_student( student_id INT PRIMARY KEY, s_c_id INT REFERENCES t_class(class_id), student_name VARCHAR(10) NOT NULL, student_sex VARCHAR(5) DEFAULT '男', student_birthday DATETIME, student_phone INT UNIQUE, student_score FLOAT CONSTRAINT FOREIGN KEY(s_c_id) REFERENCES t_class(class_id);
红色标识的就是创建外键约束的方法,个人认为也是SQL语句中最难记的。
SQL 要写起来发现东西真的多 , 自己能力也有限 , 一些东西还在总结 . 工作一忙 , 自己下班不想动 . 不能偷懒啦 ! 后面需要做的是 数据查询 ,表连接查询 还有些误区的总结 ,