操作数据库表

  1. 云栖社区>
  2. 博客>
  3. 正文

操作数据库表

Starzhang 2019-01-23 17:33:14 浏览878
展开阅读全文

/*

DML:数据库操作语言

主要对表中的数据库进行 增删改

****增:插入一条记录

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

注意: 1.列名可以在表中选择一列或者几列

2.后面的值 必须和前面的列 一一对应

3.在SQL中除了int类型的数据,其他数据必须用''或者""引起来

我们推荐用单引号

4.如果要插入的数据所有字段都有,那么以上的

    (列名1,列名2..) 可以省略

****删:删除一条记录

格式: delete from 表名;//删除表中的所有记录

delete from 表名 where条件;

****改:修改表中的记录信息

update 表名 set 字段名 = 值;//把所有记录的该列都改了

update 表名 set 字段名 = 值 where条件;

*/

#向students 表中插入一个学生信息(id:001 name:李四 )

INSERT INTO students (sid,NAME) VALUES ('001','李四');

#向students 表中插入一个学生信息(id:002 name:王五 age:18 )

INSERT INTO students (sid,NAME,sage) VALUES ('002','王五',18);


INSERT INTO students VALUES ('003','赵六',28);

#删除students表中的记录

DELETE FROM students;

#删除某一条记录

DELETE FROM students WHERE sid=3;# 这里条件sid=3不能写成 sid==3,sid.equals(3);

#修改students表,把sage这一列的值 改为20

UPDATE students SET sage=20;

#修改students表,把王五的sage这一列的值 改为 50

UPDATE students SET sage = 50 WHERE NAME='王五';# sid = 2


/*

DQL:查询数据库中的数据

基本格式:

select [distinct] *|列名1,列名2 from 表名;# 查询表中的所有列数据

带有条件的查询 用关键字 where

*/

#基本查询


SELECT * FROM product;


SELECT pname,price FROM product;


SELECT price FROM product;


SELECT DISTINCT price FROM product;


#基本查询练习

# 1.查询所有的商品.

SELECT * FROM product;

# 2.查询商品名和商品价格.

SELECT pname,price FROM product;

# 3.去掉价格重复值.

SELECT DISTINCT price FROM product;

# 4.查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.

SELECT price+10 FROM product;

# 5.别名查询.使用的关键字是as(as可以省略的).

SELECT price+10 AS 打折价格 FROM product;

SELECT price+10 打折价格 FROM product;

#条件查询练习

#查询商品名称为“花花公子”的商品所有信息:

SELECT * FROM product WHERE pname='花花公子';


#查询价格为800商品

SELECT * FROM product WHERE price=800;


#查询价格不是800的所有商品

SELECT * FROM product WHERE price <> 800;

SELECT * FROM product WHERE price > 800 OR price < 800;

SELECT * FROM product WHERE NOT (price=800);



#查询商品价格大于60元的所有商品信息

SELECT * FROM product WHERE price > 60;

SELECT * FROM product WHERE NOT (price <= 60);


#查询商品价格在200到1000之间所有商品

SELECT * FROM product  WHERE price >= 200 AND price <=1000;

SELECT * FROM product  WHERE price BETWEEN 200 AND 1000;


#查询商品价格是200或800的所有商品

SELECT * FROM product WHERE price IN (200,800);

SELECT * FROM product  WHERE price = 200 OR price = 800;


#查询含有'霸'字的所有商品


SELECT * FROM product WHERE pname  LIKE '%霸%';

#查询以'香'开头的所有商品

SELECT * FROM product WHERE pname LIKE '香%';


#查询第二个字为'想'的所有商品

SELECT * FROM product WHERE pname LIKE '_想%';



#查询没有分类的商品

SELECT * FROM product WHERE category_id IS NULL;

#SELECT * FROM product where category_id = null;# 错误的 判断空 不能用"="



#查询有分类的商品


SELECT * FROM product WHERE category_id IS NOT NULL;

#SELECT * FROM product WHERE category_id <> NULL;# 错误的 判断不为空 不用"<>"


#查询所有价格大于2000的电脑商品(catetory_id是c001)

#或者价格大于2000的服装商品(catetory_id是c002)**


SELECT * FROM product WHERE (price > 2000 AND category_id = 'c001') 

OR (price > 2000 AND category_id = 'c002');

SELECT * FROM product WHERE price > 2000 AND category_id IN ('c001','c002');


/*

SQL语言的分类:

DDL:数据库定义语言

他主要是对数据库,数据库表进行创建删除维护等

关键字:create(创建),alter(修改),drop(删除), show(查)

DCL:数据库操纵/控制语言

控制数据库访问权限

DML:数据库操作语言

它主要是对表中的数据进行 增删改

关键字:insert(增加),delete(删除),update(修改)等

DQL:数据库查询语言

它主要是对表中的数据进行 查询

关键字:select(查询) from(从)  where(条件)

*/

#注释

-- 注释

SELECT * FROM users;


/*

DDL:数据库定义语言

主要是操作数据库,操作数据库表

DDL之操作数据库:

对数据库进行增删改查

****增:创建一个数据库

create database 数据库名;//默认编号,安装的时候您选择的那个编号

create database 数据库名 charset 编码;

删:删除一个数据库

drop database 数据库名;

修:修改数据库名字很麻烦 

修改正在使用的数据库

use 数据库名;

查:

  查询正在使用的数据库:

select database();

  查询所有的数据库

show databases;


*/

#增:创建一个数据库

CREATE DATABASE db297;

CREATE DATABASE db2971 CHARSET utf8;

#删:删除一个数据库

DROP DATABASE db2971;

#修改正在使用的数据库

USE jjj;

#查询正在使用的数据库

SELECT DATABASE();

#查询所有数据库

SHOW DATABASES;

#查询某一个数据的详细信息

SHOW CREATE DATABASE db297;


/*

DDL之数据库表

对数据库表进行增删改查

****增:创建一个表

create table 表名(

字段名1 数据类型1(长度) [约束],

字段名2 数据类型2(长度) [约束]

);

删:删除表

drop table 表名;

查:查看表

desc 表名; 查看一个表的详细信息

show tables;查看所有的表

改:改名字

rename table 表名 to 新表名;


*/

#创建一个表,学生表(编号,姓名,年龄)

CREATE TABLE student(

sid INT PRIMARY KEY, -- 主键约束

sname VARCHAR(30),

sage INT

);

#删除 student表

DROP TABLE student;

#查看一个表的详细信息

DESC student;

#查看所有的表

SHOW TABLES;

#修改表的名字

RENAME TABLE student TO students;


/*

DDL之修改表中的列

增删改查

增:增加一个列

alter table 表名 add 列名 类型(长度) [约束]

删:删除一个列

alter table 表名 drop 列名;

查:查看表的数据结构

desc 表名;

改:修改列

可以修改的名字,类型,约束等..

修改列名:

alter table 表名 change 旧列名 新列名 类型(长度) 约束; 

修改列的类型和约束

alter table 表名 modify 列名 类型(长度) 约束;

修改表的字符集

alter table 表名 character set 字符集;(一般不修改)



*/

#要给students表 添加一列 "电话"

ALTER TABLE students ADD phone VARCHAR(30);

#要把students表中 "电话"这一列删除

ALTER TABLE students DROP phone;

#查看students表有多少列 分别是什么

DESC students;

#修改列名

ALTER TABLE students CHANGE sname NAME VARCHAR(30);

#修改列的类型和约束

ALTER TABLE students MODIFY NAME VARCHAR(50);


/*

三个知识点:

1.介绍两个约束

主键约束: primary key 被主键约束的列必须有唯一,而且不能为空

自动增长约束:auto_increment 被自动增长约束的列,值可以不用管

2.删除表所有数据的两种方式(面试题)

delete from 表名;# 删除表的所有数据,但是自动增长值不会重置为1

truncate  table  表名;# 删除表的所有数据,并且重置自动增长值为1

truncate的底层,是先摧毁表,然后再重建表

3.乱码问题

在DOS创建 查询uft8编码的数据库数据时,会出现乱码

解决方案:

临时方案:

set names gbk;//临时地把告诉数据库 我们用gbk来查询

永久方案:修改 my.ini的配置文件(不建议)


*/

#创建一张表,用户(编号,用户名,密码)

CREATE TABLE users(

uid INT PRIMARY KEY AUTO_INCREMENT,# 自动增长默认是从1开始

uname VARCHAR(30),

upass VARCHAR(30)

);

#插入数据

INSERT INTO users (uname,upass) VALUES ('王老','123321');

INSERT INTO users (uname,upass) VALUES ('李四','123');

#删除表中的所有数据

DELETE FROM users;

INSERT INTO users (uname,upass) VALUES ('王五','1234');

#使用truncate删除表中的所有数据

TRUNCATE TABLE users;

INSERT INTO users (uname,upass) VALUES ('赵六','12345');


/*

1.DDL:操作数据库中对象,数据库,表,列

***创建数据库

create database 数据库名;# 以默认的编码创建数据库

create database 数据库名 charset 编码名;

create database 数据库名 character set 编码名;

***创建表

create table 表名(

字段1 数据类型(长度) [约束],

字段2 数据类型(长度) [约束]

);

约束:

主键约束:primary key,该列的值必须唯一,并且不为空

自动增长列约束:auto_increment 该列值交给数据库维护

2.DML:操作数据库表中数据,对数据进行增删改

****添加一条记录

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

注意:

1.列名和后面的值 必须一一对应

2.(列名1.列名2..) 这里的列名可以写一个或者多个

3.如果是全列名,可以省略不写

4.如果值是数字类型的可以不加'',否则必须加上'' 或者 ""

****删除一条记录

delete from 表名;# 删除表中所有数据,不会重置自动增长值

truncate table 表名;#删除表所有数据,先把表摧毁再重建

delete from 表名 where 条件;# 这里条件和查询共用

****修改一条记录

update 表名 set 字段名=值,字段名=值;#表中所有记录的字段都修改了

update 表名 set 字段名=值,字段名=值 where 条件;# 这里条件和查询共用

3.DQL:操作数据库表中数据,对数据进行查询

***基本查询:

格式:

select distinct *|字段1,字段2 from 表名;

***条件查询

比较条件

>,<,>=,<=,<>,=

between xx and xx (含头行尾)

in (值1,值2)

like '_a%' 模糊查询

is null ,is not null 判断空或者不空

逻辑条件

与 and

或 or

非 not

*/



网友评论

登录后评论
0/500
评论
Starzhang
+ 关注