2019-05-14 数据库

1 DDL创建数据库

1 直接创建数据库

create databases 数据库名;

2 判断是否存在并创建数据库

create databases if not exists

3.创建数据库并指定字符集(编码表)

create database 数据库名 character set 字符集;

4. 具体操作:

直接创建建数据库db1;

create database db1;

判断是否存在并创建数据库db2;

create database if not exists db2;

创建数据库db3并指定字符集为gbk

create database db3 character set gbk;

查看数据库

1.查看所有数据库

show databases;

1.查看某个数据库的定义信息

show create database 数据库名;

小结

1.创建数据库语法:create database 数据库名;

2.查看所有数据库: show databases;

DDL修改和删除数据库

修改数据库字符集

alter database 数据库 default character set 新的字符集;

具体操作:

将db3的数据库字符集改成utf8

alter database db3 default character set utf8;

注意:如果修改数据库指定的编码表是utf8,记住不能写utf-8。utf-8是错误的。

删除数据库

dropdatabase 数据库名;

具体操作:
 drop  database db2;

小结

1.修改数据库字符集格式?alter database 数据库 character 新的字符集;

2.删除数据库格式? drop database数据库名;

DDL 使用数据库

1.查看正在使用的数据库

select--查询

select database();

2.使用、切换数据库

use 数据库名;

查看正在使用的数据库

select database();

使用db1数据库

use db1;

小结

DDL语句操作                   关键字

创建                                   create database 数据库名;

修改                                     alter database character set 字符集

查看                                     show databases;

删除                                    drop database 数据库名;

DDL 创建表

create table 表名(字段名1 字段类型1,字段名2 字段类型2....);

建议写成如下格式:

javase

public class Student{

int age;

}

create table 表名(

字段名1 字段类型1,

字段名2 字段类型2

);

MySQL数据类型

类型 int 整型 double 浮点型 varchar 字符串型 data 日期型 ,格式为 yyyy-MM-dd,只有年月日,没有时分秒;

创建Student表包含id,name,birthday字段

create table student(

id int ,

name varchar(20),

birthday date

);

小结

1.创建表语句:create table 表名(字段名 类型,字段名,字段类型....);

2.常用数据类型: int ,double,varchar, date

DDL 查看表

1.查看某个数据库中的所有表

show tables;

2.查看表结构

desc 表名;

3.查看创建表的SQL语句

show create table 表名;

具体操作:

查看数据库中的所有表

show tables;

查看student 表结构

desc student;

查看student的创建表SQL语句

show create table student;

小结

1.查看某个数据库中的所有表:show tables;

2.查看表结构 :desc表名;

3.查看创建表的SQL语句: show create table 表名;

DDL删除

快速创建一个表结构相同的表

create table 表名 like 其他表;

具体操作:

创建s1表,s1表结构和student表结构相同

create table s1 like student;

删除表

1.直接删除表

drop table 表名;

2.判断表是否存在并删除表

drop table if exists 表名

具体操作:

直接删除s1表

drop table s1;

判断是否存在并删除s1表

drop table if exists s1;

小结

1.快速创建一个表结构相同的表: create table 表名 like 其他表;

2.删除表语法:drop table 表名;

DDL表结构修改(了解)

1.添加表列

alter table 表名 add 字段名 类型;

具体操作:

为学生添加一个新的字段remark,类型为varchar(20)

alter table student add remark varchar(20);

2.修改列类型

alter table 表名 modify 字段名 行的类型;

将student表中的remark字段改成varchar(100)

alter table student modify remark varchar(100);

3.修改列名

alter table 表名 change 旧字段名 新字段名 类型;

将student表中的remark字段改成intro,类型varchar(30)

alter table student change remak intro varchar(30);

4.删除列

alter table 表名 drop 字段名;

删除student表中的字段intro

alter table student drop intro;

5.修改表名

rename table 表名 to 新表名;

将 student 改成 student2

rename table student to student2;

6.修改字符集

alter table 表名 character set 字符集;

将student2表的编码修改成gbk

alter table student2 character set gbk;

小结

1.所有修改表前面的语法都是相同的?alter table 表名

2.添加一列: add 字段名 类型

3.修改类型: modify 字段名 新的类型

4.修改字段名和类型:change旧字段名 新字段名 类型

5.删除一列: drop 字段名

DML插入记录(重点)

创建student 表包含id,name,age,birthday,sex,address字段。

create table student(

id int,

name varchar(20),

age int,

birthday date,

sex char(2),

address varchar(50)

);

插入全部字段

insert into 表名(字段名1,字段名2...)values(字段值1,字段值2...)

不写字段名

insert into 表名values (字段值1,字段值2...)

插入部分数据

insert into表名(字段名1,字段名2...)values(字段值1,字段值2...);

没有添加数据的字段会使用NULL

1.关键字说明

insert into 表名-表示往哪张表中添加数据

(字段名1,字段名2,...)--要给哪些字段设置值

values(值1,值2,...)--设置具体的值

注意:使用  select* from 表名--查看该表的所有信息。

2.具体操作:

插入部分数据,往学生表中添加id,name,age,sex数据

insert into student(id,name,age,sex)values(1,'张三‘,20,‘男’);

向表中插入所有字段

insert into student(id,name,age,sex,address)values(2,'李四',23,'女','广州');

不写字段名

insert into student values(3,'王五',18,'男','北京');

DML更新记录

1.不带条件修改数据

update 表名 set 字段名=新的值;

2.带条件修改数据

update 表名 set 字段名=新的值 where 条件

3.关键字说明

update:表示修改记录

set:要改哪个字段

4.具体操作:

不带条件修改数据,将所有的性别改成女

update student set sex='女';

带条件修改数据,将id号为2的学生性别改成男

update student set sex=‘男’where id=2;

一次性修改多个列,把 id为3的学生,年龄改成26岁,adress改成北京

update student set age=26,address='北京'where id=3;

小结

1.不带条件的更新数据库记录,update table set 字段名=新的值;

2.带条件:update table set 字段名=新的值 where 条件;

DML删除表记录

1.不带条件删除数据

delete -- 删除记录

delete from 表名;

2.带条件删除数据

delete from 表名 where 条件;

3.truncate删除表记录

truncate table 表名;

truncate和delete的区别:

delete是将表中的数据一条一条删除

truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样

小结

1.指定条件删除:delete from 表名where 条件;

2.没有条件删除所有的记录: delete from 表名;

3,删除表结构再创建表:truncate table表名;

DQL没有条件的简单查询

查询表中所有列数据

1.写出查询每列的名称

select --表示查询

select 字段名1,字段名2,...from 表名;

具体操作:

select id,name,age,sex,address from student;

1.使用*表示所有的列

select *from 表名;

具体操作:

select *from student;

查询表中指定列的数据

select 字段名1,字段名 2 from表名;

查询student表中的name,age from student ;

select name ,age from student;

别名查询

查询时给列、表指定别名需要使用AS关键字

使用别名的好处是方便观看和处理查询到的数据SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名;注意:

查询给表取别名目前还看不到效果,需要到多表查询的时候才能体现出好处AS关键字可以省略

具体操作:

查询sudent表中name 和 age 列,name列的别名为”姓名”,age列的别名为”年龄”

SELECT NAME AS 姓名, age AS 年龄 FROM student;

清除重复值

1.查询指定列并且结果不出现重复数据

SELECT DISTINCT 字段名 FROM 表名;

2.具体操作:

查询address列并且结果不出现重复的address

select distinct address 城市 from student;

查询math + english的和

SELECT math + english FROM student;

查询math + english的和使用别名”总成绩”

SELECTmath + english 总成绩FROMstudent;

小结

1.简单查询格式: select 字段名,字段名...from 表名;

2,定义别名:select 字段名 as 别名 from 表名;

3.去除重复行: select distinct 字段名 from 表名;

4.数值列,可以进行计算,不会影响表中数据

蠕虫复制

insert into 表名1select*from表名2;

创建student2表,student2结构和student表结构一样

create table student2  like student;

将 student表中的数据添加到student2表中

insert into student2 select *from student;

注意:如果只想复制student表中name,age字段数据到student2表中使用如下格式

insert into student2(name,age)select name,age from student;

你可能感兴趣的:(2019-05-14 数据库)