当前位置:文档之家› 数据库基本知识和基础sql语句

数据库基本知识和基础sql语句

数据库的发展历程●没有数据库,使用磁盘文件存储数据;●层次结构模型数据库;●网状结构模型数据库;●关系结构模型数据库:使用二维表格来存储数据;●关系-对象模型数据库;理解数据库●RDBMS = 管理员(manager)+仓库(database)●database = N个table●table:●表结构:定义表的列名和列类型!●表记录:一行一行的记录!Mysql安装目录:●bin目录中都是可执行文件;●my.ini文件是MySQL的配置文件;相关命令:●启动:net start mysql;●关闭:net stop mysql;●mysql -u root -p 123 -h localhost;➢-u:后面的root是用户名,这里使用的是超级管理员root;➢-p:后面的123是密码,这是在安装MySQL时就已经指定的密码;●退出:quit或exit;sql语句语法要求●SQL语句可以单行或多行书写,以分号结尾;●可以用空格和缩进来来增强语句的可读性;●关键字不区别大小写,建议使用大写;分类●DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;●DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);基本操作●查看所有数据库名称:SHOW DATABASES;●切换数据库:USE mydb1,切换到mydb1数据库;●创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb1;●修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8●创建表:CREATE TABLE 表名(列名列类型,列名列类型,......);●查看当前数据库中所有表名称:SHOW TABLES;●查看指定表的创建语句:SHOW CREATE TABLE emp,查看emp表的创建语句;●查看表结构:DESC emp,查看emp表结构;●删除表:DROP TABLE emp,删除emp表;●修改表:1.修改之添加列:给stu表添加classname列:ALTER TABLE stu ADD (classname varchar(100));2.修改之修改列类型:修改stu表的gender列类型为CHAR(2):ALTER TABLE stu MODIFY gender CHAR(2);3.修改之修改列名:修改stu表的gender列名为sex:ALTER TABLE stu change gender sex CHAR(2);4.修改之删除列:删除stu表的classname列:ALTER TABLE stu DROP classname;5.修改之修改表名称:修改stu表名称为student:ALTER TABLE stu RENAME TO student;其他常用命令:mysql基本操作命令一、数据库操作1.新增数据库create database 数据库名字[数据库选项];数据库选项:规定数据库内部该用什么进行规范字符集:charset 具体字符集(utf8)校对集:collate 具体校对集(依赖字符集)2.查看数据库2.1查看所有的数据库show databases;匹配查询:show databases like 'pattern'; #pattern可以使用通配符_:下划线匹配,表示匹配单个任意字符,如:_s,表示任意字符开始,但是以s 结尾的数据库%:百分号匹配,表示匹配任意个数的任意字符,如:student%,表示以student开始的所有数据库2.2查看数据库的创建语句show create database 数据库名字;3.修改数据库数据库名字在mysql高版本中不允许修改,所以只能修改数据库的库选项(字符集和校对集)alter database 数据库名字[数据库选项];eg:alter database stu charset utf8;4.删除数据库对于数据库的删除要谨慎考虑,是不可逆的。

drop database 数据库名字;4.选择数据库use 数据库名字;二、数据表操作(字段)1.新增数据表create table 表名(字段名1 数据类型comment '备注...',字段名2 数据类型comment '备注...',.... #最后一行不需要逗号)[表选项];表选项:1)字符集:charset/character set(可以不写,默认采用数据库的)2)校对集:collate3)存储引擎:engine = innodb(默认的):存储文件的格式(数据如何存储)注意:创建数据表的时候,需要指定要在哪个数据库下创建。

创建方式有隐式创建和显式创建1)显式创建:create table 数据库名字.数据表名字2)隐式创建:use 数据库名字;2.查看数据表2.1查看所有的数据表show tables;2.2查看表使用匹配查询Show tables like ‘pattern’;#与数据库的pattern一样:_和%两个通配符2.3查看数据表的创建语句show create table 数据表名字;2.4查看数据表的结构desc 数据表名字;3.修改数据表3.1修改表名字rename table 旧表名to 新表名;3.2修改表选项(存储引擎,字符集和校对集)alter table 表名[表选项];3.3修改字段(新增字段,修改字段名字,修改西段类型,删除字段)新增字段:alter table 表名add [column] 字段名字数据库类型[位置first/after];位置选项:first 在第一个字段after 在某个字段之后,默认就是在最后一个字段后面修改字段名称:alter table 表名change 旧字段名字新字段名字字段数据类型[位置];eg:alter table student name fullname varchar(30)after id;修改字段的数据类型:alter table 表名modify 字段名字数据类型[位置];删除字段:alter table 表名drop 字段名字;4.删除数据表drop table 表名;三、数据操作1. 新增数据inser into table 表名[(字段列表)] values (值列表);2.查看数据select */字段列表from 表名[where条件];3.修改数据update 表名set 字段名= 值where 条件;注意:使用update操作最好配合limit 1使用,避免操作大批量数据更新错误.4.删除数据delete from 表名where 条件;注意:没有where 条件就是默认删除全部数据.四、列属性(字段)1.删除主键:alter table 表名drop primary key;2.增加主键:alter table 表名add primary key(字段列表);#可以是复合主键3.删除自增长:只能通过修改字段属性的方法操作.4.删除唯一键:alter table 表名drop index 索引名字;#默认的唯一键名字就是字段的本身5.增加唯一键:alter table 表名add unique key (字段列表);#可以是复合唯一索引五、外键约束1.创建表的时候增加外键constraint 外键名字foreign key(外键字段) references 父表(主键字段);eg:-- 创建父表(班级表)create table class(id int primary key auto_increment,name varchar(10) not null comment '班级名字',room varchar(10) not null comment '教室号')charset utf8;-- 创建子表(外键表)create table student(id int primary key auto_increment,number char(10) not null unique comment '学号:itcast + 四位数',name varchar(10) not null comment '姓名',c_id int comment '班级ID',-- 增加外键foreign key(c_id) references class(id))charset utf8;2.创建表之后增加外键alter table 表名add constraint 外键名字foreign key(外键字段) references 父表(主键字段);eg:-- 增加外键alter table student add constraint student_class_fk foreignkey(c_id) references class(id);3.删除外键alter table 表名drop foreign key 外键名字; #查看外键名字需要通过表创建语句来查询.eg:-- 删除外键alter table student drop foreign key student_ibfk_1;数据查询语法(DQL)DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。

SELECT selection_list /*要查询的列名称*/FROM table_list /*要查询的表名称*/WHERE condition /*行条件*/GROUP BY grouping_columns /*对结果分组*/HAVING condition /*分组后的行条件*/ORDER BY sorting_columns /*对结果分组*/LIMIT offset_start, row_count /*结果限定*/基础查询1.1 查询所有列SELECT * FROM stu;1.2 查询指定列SELECT sid, sname, age FROM stu;2 条件查询2.1 条件查询介绍条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:●=、!=、<>、<、<=、>、>=;●BETWEEN…AND;●IN(set);●IS NULL;●AND;●OR;●NOT;2.2 查询性别为女,并且年龄50的记录SELECT * FROM stuWHERE gender='female' AND ge<50;2.3 查询学号为S_1001,或者姓名为liSi的记录SELECT * FROM stuWHERE sid ='S_1001' OR sname='liSi';2.4 查询学号为S_1001,S_1002,S_1003的记录SELECT * FROM stuWHERE sid IN ('S_1001','S_1002','S_1003');2.5 查询学号不是S_1001,S_1002,S_1003的记录SELECT * FROM tab_studentWHERE s_number NOT IN ('S_1001','S_1002','S_1003');2.6 查询年龄为null的记录SELECT * FROM stuWHERE age IS NULL;2.7 查询年龄在20到40之间的学生记录SELECT *FROM stuWHERE age>=20 AND age<=40;或者SELECT *FROM stuWHERE age BETWEEN 20 AND 40;2.8 查询性别非男的学生记录SELECT *FROM stuWHERE gender!='male';或者SELECT *FROM stuWHERE gender<>'male';或者SELECT *FROM stuWHERE NOT gender='male';2.9 查询姓名不为null的学生记录SELECT *FROM stuWHERE NOT sname IS NULL;或者SELECT *FROM stuWHERE sname IS NOT NULL;3 模糊查询当想查询姓名中包含a字母的学生时就需要使用模糊查询了。

相关主题