欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

什么是数据库?数据库的作用想学数据库必看 (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 查询年龄在2040之间的学生记录
 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