什么是数据库?数据库的作用想学数据库必看 (2)数据库操作 库, 表,列
程序员文章站
2022-01-15 10:59:37
...
1创建数据库
create database 数据库名字;
查看一下创建的数据
show create database mydb1;
指定数据库字符集
Create database 数据库名 character set gbk;
查看数据库支持的字符集
show character set;
设置对应的效验规则
create database mydb3
character set gbk COLLATE gbk
chinese ci;
2.查询数据库
查看当前数据库服务器中的所有数据库
show databases;
查看前面创建的mydb2数据库的定义信息
show create database mydb2;
3.修改数据库(alter)
修改字符集utf8
alter database 库名 character set 要修改的编码格式;
4.删除数据库
删除前面创建的mydb3数据库
Drop database mydb3;
5.其他:
查看当前使用的数据库
select database();
切换数据库
use mydb2;
6.退出数据库
quit;
----------------------------
创建学生表
-
学号 姓名 性别 --字段(列)
1 抗 男 一条记录
2 恺 男 一条记录
3 亮 男 一条记录
操作数据库中的数据表
*语法:
create table 表名(
字段1 字段类型,
字段2 字段类型,
.........
字段N 字段类型
);
*常用的数据类型:
int : 整型
double : 浮点型, 例如 double(6,2) 表示最多五位 ,其中必须有 2位小数 , 即最大值为999.99;
char: 固定长度字符串类型:char(10) 10个字节 'wanglong_ _'
varchar:
可变长度字符串类型:varchar(10)'wanglong' 字符串的长度为8
text: 字符串类型: 大数据文本 最大4M
blob:字节类型; 保存音频 保存图片
date 日期类型 格式为: yyyy-MM-dd;
Time: 时间类型 mm:hh:ss;
练习:
1.创建表
mysql> create table emp(
-> id int,
-> name varchar(50),
-> gender varchar(10),
-> birthday date ,
-> Entry_date date,
-> job varchar(100),
-> salary double,
-> resume double,
-> );
)
2.修改表
添加一列 image blob(子节类型)
ALTER TALE 表名 ADD image(字段) blob(字段类型);
修改job列, 使其长度为60
ALTER TABLE emp MODIFY job varchar (60);
删除image列,一次只能删一列
ALTER TABLE emp TO user;
查看表格的创建细节
SHOW CREATE TABLE user;
列名name 修改为username
ALTER TABLE user GHANGE 原字段名 新字段名 varchar(100);
###### DML (操作表数据)
1.insert(插入)
语法: INSERT INTO 表名 (列名1,列名2....)VALUES(列值1,列值2...);
注意:列名与列值的类型,个数,顺序要一一对应.
可以把列名当做java中的形参,把列值当做实参.
值不要超出定义的长度.
如果插入空值,请使用null
插入的日期和字符一样,都使用引号括起来.
练习:
create table emp( id int name varchar(100), gender varchar(10), birrhday date, salary float(10,2), entry_date date, resume text );
INSERT INTO emp(id,name,gender,birthday,salary,entry,date,resume)
VALUES(1,'王龙','female','1990-5-10',10000,'2015-5-5','good girl');
INSERT INTO emp(id,name,gender,birthday,salary,entry,date,resume)VALUES(2,'list','mate','1995-5-10',10000,'2015-5-5','good boy');
INSERT INTO emp(id,name,gender,birthday,salary,entry,date,resume)VALUES(3,'wangwu','male','1995-5-10',10000,'2015-5-5','good boy');
批量插入:
INSERT INTO emp VALUES
(4,'ZS','M','2015-09-01',10000,'2015-09-01',NULL),
(5,'LI','M','2015-09-01',10000,'2015-09-01',NULL),
(6,'WW','M','2015-09-01',10000,'2015-09-01',NULL);
2.修改操作(update)
语法:UPDATE 表名 SET 列名1=列值2...WHERE 列名 =值
练习
将所有员工薪水修改为5000元
UPDATE emp SET salary = 5000
将姓名'zs'的员工薪水修改为3000元
UPDATE emp SET salary = 3000 WHERE name='zhangsan';
将姓名为'zs'的员工薪水修改为4000元,gender = 'f'WHERE name='zs';
将wu的薪水在原有的基础上增加1000元.
UPDATE emp SET salary = salary+1000 WHERE gender ='male';
3.删除操作(Delete)
语法: DELETE FROM 表名 [WHERE 列名=值]
练习:
删除表中称为'wanglong'的记录.
DELETE FROM emp WHERE name ='zs';
删除表中所有记录.
DELETE FROM emp;
-----------------------------
DQL 查询操作
DQL 数据查询语言(重要)
数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端.
查询返回的结果集是一张虚拟表.
查询关键字: SELECT
语法: SELECT 列名1,列名2 FROM表名(查询多列用逗号隔开)
查询所有列 使用*(星号)
查询练习
CREATE TABLE stu(
sid CHAR(6),
sname VARCHAR(50),
age INT ,
gender VARCHAR(50)
);
INSERT INTO stu VALUES('S_1001','liuYi',35,'male');
INSERT INTO stu VALUES ('S_1002','chenEr',15,'female');
INSERT INTO stu VALUES ('S_1003','zhangSan',99,'male');
INSERT INTO stu VALUES ('S_1004','hangSan',29,'female');
INSERT INTO stu VALUES ('S_1005','angSan',34,'male');
INSERT INTO stu VALUES ('S_1006','gSan',45,'female');
INSERT INTO stu VALUES ('S_1007','San',25,'male');
INSERT INTO stu VALUES ('S_1008','Sanso',85,'female');
INSERT INTO stu VALUES ('S_1009','zSan',66,'male');
INSERT INTO stu VALUES ('S_1010','zhSan',NULL,'NULL');
-----------------------------
雇员表:emp
CREATE TABLE emp(
empno INT,
ename VARCHAR(50),
job VARCHAR(50),
mgr INT ,
hiredate DATE,
sal DECIMAL(7,2),
comm decimal(7,2),
deptno INT
);
INSERT INTO emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp values(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp values(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp values(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp values(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp values(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp values(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp values(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp values(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp values(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp values(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp values(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp values(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp values(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);
部门表:dept
CREATE TABLE dept(
deptno INT,
dname varchar(14),
loc varchar(13)
);
INSERT INTO dept values(10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept values(20, 'RESEARCH', 'DALLAS');
INSERT INTO dept values(30, 'SALES', 'CHICAGO');
INSERT INTO dept values(40, 'OPERATIONS', 'BOSTON');
查询练习
1.查询所有列
SELECT *FROM stu;
2.查询指定列
SELECT sid , sname , age FROM stu;
3.条件查询介绍
条件查询就是在查询给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字;
= != ,<>, < ,<=,>,>=;
BETWEEN...AND;范围查询 age BERWEEN 18 AND 30;
IN (set); 固定的范围之内 用逗号隔开
IN NULL ; (是空)
IS NOT NULL (不是空)
AND; (与)
OR;(或)
NOT;(非)
练习
2.2 查询性别为女 并且年龄50的记录
SELECT *FRMO stu WHERE gender='female' AND age<50;
2.3 查询学号为S_1001,或者姓名为liSi的记录
SELECT *FRMO stu WHERE sid='S_1001' OR sname = 'liSi';
2.4 查询学号不是 1,2,3的记录
SELECT *FROM stu WHERE sid IN('S_1001','S_1002','S_1003');
2.5 查询学号不是 S_1001 ,S_1002,S_1003的记录
SELECT *FROM tab_student WHERE s_number NOT IN ('S_1001','S_1002','S_1003');
2.6 查询年龄为null的记录
SELECT *FROM stu WHERE age IS NULL;
2.7 查询年龄在20到40之间的学生记录
SELECT *FROM stu WHERE age >= 20 AND age <= 40;
或者
SELECT *FROM stu WHERE age
BETWEEN 20 AND 40;
2.8 查询性别非男的学生记录
SELECT *FROM stu WHERE gender !='male';
或者 SELECT *FROM stu WHERE
gender <>'male';或者SELECT *FROM stu WHERE NOT gender ='male';
2.9 查询姓名不为null的学生记录
SELECT*FROM stu WHERE sname
IS NOT NULL;
或者SELECT*FROM stu WHERE NOT sname IS NULL;
字段控制查询
4.1 去除重复记录
去除重复记录(两行或两行以上记录中系列的上的数据都相同),例如emp表中sal字段就存在相
同的记录.当只查询emp表的sal字段时,那么会出现重复记录,那么想去除重复记录,需要使用
DISTINCT:
SELECT DISTINCT 字段 FEOM emp;
4.2查看雇员的月薪与佣金之和
因为sal和comm两列的类型都是数值类型,所以可以做加运算.如果sal或comm中有一个字段不是SELECT *,sal + comm FROM emp;
注意: 任何数值和 null 值相加 都是null值
什么是数据库?数据库的作用想学数据库必看 (3)数据库操作 排序, 聚合函数 ,分组查询,分页查询,模糊查询,数据完整性
http://blog.csdn.net/qq_36390044/article/details/79633023
推荐阅读
-
SQL Server 数据库调整表中列的顺序操作方法及遇到问题
-
什么是数据库?SQL、表、列和数据类型介绍
-
小弟我们在建数据库时,设计表的字段为不为空的作用是什么
-
SQL Server 数据库调整表中列的顺序操作方法及遇到问题
-
Mysql之数据库锁(表锁(偏读)、表锁案例、表锁总结、行锁(偏写)、行锁案例、如何分析行锁定、什么是间隙锁、间隙锁的危害、如何锁定一行)
-
什么是数据库的角色(ROLE) SQL ServerDB2Oracle数据库角色
-
什么是数据库?SQL、表、列和数据类型介绍
-
mysql操作之常用操作——数据库和数据表的基本操作(1)共2课
-
PHP中什么是pdo?访问数据库有什么优点?扩展的作用是什么?
-
sql数据库:数据表的行/列操作基础, 增删改查