数据库的基本操作
简介:
数据库:持久化(保存)数据的工具
SQL:Structured Query Language结构化的查询语言
在数据库中名称大小写不敏感,创建到数据库中都会变成大写
知识点比较细,看的时候需要耐心,看到最后可能对你会有一点帮助…
数据库语言:
DDL(数据库定义语言) | 表的创建,修改(表结构)(data definition language) |
---|---|
DML(数据库操作语言) | 表数据的增加,删除,修改(Data Manipulation Language) |
DQL(数据查询语言) | 数据库的查询(data query language) |
TCL(事物控制语言) | 处理数据库中的事务(Transaction Control Language) |
DCL(数据控制语言) | 是用来设置或更改数据库用户或角色权限的语句grant,deny,revoke(Data Control Language) |
1.DDL:数据库定义语言
1.1DDL语句用于建立,修改,删除数据库对象
-- MySQL:不区分大小写,官方建议使用大写,开发的习惯一般小写
-- 创建数据库:create database 数据库名;
-- 创建学生数据库
create database students;
create database students charset utf8;
CREATE DATABASE IF NOT EXISTS mydb DEFAULT CHARSET utf8;
-- 删除数据库:DROp DATABASE 数据库名;
drop database students;
-- 查看students下所有的表
show tables;
-- 创建表:
-- 格式:
-- create table 表名( 字段名1 数据类型1, 字段名2 数据类型2 .... );
-- 数据类型:参照Java的数据类型
-- 整数
-- int
-- bigint
比如类型int[M],M表示该int类型的大展示宽度。大展示宽度为 255。展示宽度和该类型数字能表示的取值范围是没有关系的
-- tinyint 1字节
-- smallint 2字节
-- mediumint 3字节
-- int 4字节
-- bigint 8字节
-- 字符串
-- char
-- varchar
-- char:定长字符串。如:char(20)表示该字段固定长度为20,如果字符串的长度不够20,会用空 字符填充。大长度为2000
-- 因此char类型一般用于长度确定的数据列(比如:手机号,性别,身份证号等)。
-- varchar:变长字符串。如varchar(20)表示该字段的大长度为20,存入多少个字符,长度就 为几。大长度为4000
-- 因此从存储角度来说varchar更节省空间,效率实际低于char;因此varchar一般用于长度 不确定的字符串列
-- text(65535)和longtxt(2(32)-1) 适合长文本
-- 小数
-- float
-- double
-- decimal
-- float 4字节浮点型,例如double(5,2)表示多5位,其中必须有2位小数,即大值为999.99;
-- double 8字节浮点型,例如double(5,2)表示多5位,其中必须有2位小数,即大值为999.99;
-- 泛型型 decimal(m,d),m<65,d<m且d<30 在表金钱方面使用该类型,因为不会出现精度缺失问题;
-- 日期
-- date:日期类型,格式为:yyyy-MM-dd;(3字节)
-- time:时间类型,格式为:hh:mm:ss(3字节)
-- timestamp:时间戳类型 yyy-MM-dd hh:mm:ss(4字节)
-- datetime:日期时间 yyyy-MM-dd hh:mm:ss(8字节)
-- ENGINE 设置存储引擎,CHARSET 设置编码。
use students;
-- DDL(数据定义语言):表的创建,修改(表结构)
-- 创建学生表(学号,姓名,分数)
create table students(id int,name varchar(40),score ouble );
-- 查看表结构(不是DDL语句)
desc students;
-- 在表中添加列:alter table 表名 add(字段名 字段的数据类型);
alter table students add(`describe` varchar(200));
-- 给学生表添加性别,电话的字段
alter table students add(sex char(1),tel char(11));
-- 删除表中的列:alter table 表名 drop 字段
-- 删除学生表中的`describe`字段
alter table students drop `describe`;
-- 删除多列
alter table students drop sex,drop tel;
alter table students drop column sex,drop column tel;
-- 修改表中的字段名称:alter table 表名 change 原字段名称 新字段名称 数据类型;
-- 修改学生表中的tel字段为telephone
alter table students change tel telephone char(11);
-- 修改表中的字段数据类型:alter table 表名 modify 字段 字段数据类型;
-- 修改学生表中的telephone字段的数据类型为int(11)
alter table students modify telephone int(11);
-- 修改表名
-- alter table 原表 rename to 新表;
-- rename table 原表 to 新表;
-- 把students表修改为stus表
alter table students rename to stus;
-- 把stus表修改为students表
rename table stus to students;
-- 删除表:drop table 表名;
-- 删除学生表 drop table students;
1.2 DML语句:数据操纵语言
DML:Data Manipulation Language数据操作语言:表数据的增加,删除,修改
先创建一个students表:
-- 创建学生表(学号,姓名,分数)
create table students(id int,name varchar(40),score double
);
-- students表如上:
-- 插入表数据:
-- insert into 表名(字段名1,字段名2...) values(字段1值,字段2值);
-- 向students表插入一条数据
insert into students(id,name,score) value(1,'甜甜',98);
-- 如果是字符类型,值需要加单 引号(推荐)
-- 一次插入多条数据
insert into students(id,name,score) values(1,'甜甜',98),(2,"诚诚",6);
-- 如果前面括号中的字段顺序调换,只要后面的值对应起来即可
insert into students(name,score,id) values('灼灼',100,3);
-- 如果表中所有的字段都需要插入数据,此时values前面的括号内容可以省略,但是value(values)后面 的括号中的值一定要按照数据库中的顺序填写
insert into students value(4,'湛湛',59);
-- 插入部分字段的数据
insert into students(name,score) value('攀哥',0);
-- 删除表中的数据:delete from 表名;
delete from students;
-- 删除表中所有的数据
-- 修改表中的数据:update 表名 set 字段1名=值,字段2名=值 update students set name='蜡笔小新';
-- 指定修改某一个数据:where
-- 修改name='蜡笔小新'的分数为99分
update students set score=99 where name ='蜡笔小新';
-- 修改id为2的学生分数为199分
update students set score=199 where id=2;
select * from student;
-- 对students表加一列电话telephone
alter table students add(telephone varchar(7));
-- 插入数据
insert into students(id,name,score,telephone) values(3,'张三丰',77,'1504333'); insert into students(id,name,score,telephone) values(9,'郭靖',98,'1504333');
insert into students(id,name,score,telephone) values(11,'张无忌',63,'1504333');
-- 查看学生表中的所有数据
select * from students;
1.3 DQL语句:数据查询语句
-- *:表示所有字段。若要显示指定的字段,则可将*用字段名代替,多个字段名用逗号隔开
-- 查询stu表的所有字段 select * from students;
-- 只查询name和score字段 select name,score from students;
-- 别名as:用于查询给字段或者表起别名,别名只在当前这次查询有效(as可以省略不写)
select name as 姓名,score 分数 from students;
-- where关键字
-- 查询id为5的学生情况 select * from students where id=5;
-- 查询分数>80的学生信息 select * from students where score > 80;
1.4 巩固小练习(一)
– 创建一个员工表包含:工号(int),姓名(varchar),性别(char),职位(varchar),月薪(double(m,n)); 要求完成以下功能:
– 添加一个入职时间列
– 修改姓名name为ename
– 删除性别列
-- 创建一个员工(staff)表
create table Staff(
id int,
name varchar(20),
sex char(5),
job varchar(20),
money double(7,2)
);
desc staff;
-- 添加一个入职时间列
alter table staff add(date char(12));
-- 修改姓名name为ename
alter table staff change name ename varchar(20);
-- 删除性别列
alter table staff drop sex;
巩固小练习(二)
– 1创建一个商品表包含:商品id,名称,单价,库存量,销量,上架时间,要求完成以下功能:
– 向表中添加4条数据
– 修改指定id商品的单价
– 修改指定id商品的库存和销量
– 查询所有的商品信息
– 删除库存量为0的商品
create table shop(
id int,-- 商品id
name varchar(30),-- 名称
price char(5), -- 单价
stock varchar(50),-- 库存量
sale char(30),-- 销量
shoptime varchar(15) -- 上架时间
);
-- 向表中添加4条数据
insert into shop(id,name,price,stock,sale,shoptime) values(1,'旺旺饼干',3,50,20,20200102),(2,'牛奶',4,50,20,20200102),(3,'瓜子',5,50,20,20200102),(4,'红牛',6,50,20,20200102);
insert into shop (id,name,price,stock,sale,shoptime) values(5,'辣条',2,0,20,20200102);
-- 修改指定id商品的单价
update shop set price = 2 where id = 1;
-- 修改指定id商品的库存和销量
update shop set stock = 40,sale = 15 where id = 3;
-- 查询所有的商品信息
select * from shop;
-- 删除库存量为0的商品
delete from shop where stock = 0;
本期分享结束,后面的语言等待更新… ,有问题的欢迎评论交流,谢谢大家的观看。