MySQL基本操作

一、:MySQL的优点

1、 实现数据共享

1.1.通过私有构造器强化不可实例化的能力。

1.2.数据实现集中控制

1.3.数据一致性,完整性和可维护性,以确保数据的安全性和可靠性

SQL

DDL数据库定义语言 Data Definition Language

DCL数据库控制语言 Data Control Language

DML数据库操控语言 Data Manipulation Language

    二、:数据库定义语言

2.1.创建库 create database 库名 [character set 码表  collate 字符校对集]

2.2.显示所有库 show databases;

2.3.删除库 drop database 库名;

2.4.修改数据库码表 alter database 库名 character set 码表  collate 字符校对集

2.5.使用数据库 use 库名

2.6.查看当前使用的库 select database();

2.7.显示创建库语句 show create database 库名;

三、:创建表相关的语句

1.创建表
create table t_user(
id int,
name varchar(20),
sal double(4,3),
birthday datetime,
hiredate timestamp
);
varchar最好指定长度
整型一般不指定.

2.查看当前库中有哪些表
show tables;
3.查看表的结构
desc 表名; description
desc t_user;
4.删除表
drop table 表名;
drop table t_user;
5.添加一列
alter table 表名 add 列名 类型;
alter table t_user add photo blob;
6.修改列的类型
alter table 表名 modify 列名 类型;
alter table t_user modify photo varchar(20);
7.修改列的名称
alter table 表名 change  旧列名  新列名 数据类型;
将 photo这一列 改名为 image
alter table t_user change photo image varchar(20);
8.删除某列
alter table 表名 drop 列名;
alter table t_user drop image;
9.修改表的名称
rename table 旧表名 to 新名;
rename table t_user to user;
10(用的极少)修改表的字符集. (如果创建表时不指定,默认使用数据库的字符集)
alter table 表名 character set 字符集 collate 校对集;
alter table t_user character set utf8 collate utf8_bin;

四、:列的约束和修改

  4.1、类的约束

列的约束保证数据的完整性的.
1.非空约束(not null)  指定非空约束的列, 在插入记录时 必须包含值.
2.唯一约束(unique)  该列的内容在表中. 值是唯一的.
3.主键约束(primary key)  当想要把某一列的值,作为该列的唯一标示符时,可以指定主键约束(包含 非空约束和唯一约束).
一个表中只能指定一个主键约束列.
主键约束 , 可以理解为 非空+唯一. 
约束体现数据库的完整性.
例如:创建带有约束的表

create table t_user2(
id int primary key auto_increament, -- 员工编号
name varchar(10) not null,         -- 员工姓名
loginname varchar(10) not null unique,  -- 登陆名称
password varchar(20) not null,  -- 密码
age int(3) not null,  -- 年龄
birthday datetime not null,  -- 生日
hiredate timestamp not null  -- 入职日期
);

  4.2、列的修改

   1.在上面员工表(employee表中)的基础上增加一个image列。
alter table employee add image varchar(20);
  2.修改job列,使其长度为60。
alter table employee modify job varchar(60);
  3.删除gender列。
alter table employee drop gender;
  4.表名改为user。
rename table employee to user;
  5.修改表的字符集为utf8
  6.列名name修改为username
alter table employee change name username varchar(20);

五、:表数据的插入和删除

  5.1、表的插入

为表添加记录 
  insert into 表名[(列名1,列名2...)] values (值1,值2...);

  1.插入一条数据
  1>指定要插入那些列
insert into  t_user(name,email) values('tom','[email protected]');
  2>不指定插入哪些列, 需要指定每一列的值
insert into  t_user values(null,'jerry','[email protected]')
insert into  t_user(name,email) values('汤姆','[email protected]');

  5.2、表的删除

 删除记录语句
  DELETE FROM   表名  [WHERE 条件];
  1. 删除表中名称为’rose’的记录。
  DELETE FROM employee WHERE NAME='rose';
  2. 删除表中所有记录
  DELETE FROM employee ;
  3.使用truncate删除表中记录。
  TRUNCATE TABLE employee;

六、:表数据查询

  DQL语句(DML) 查询语句
  语法:
    SELECT selection_list                       /*要查询的列名称*/
  FROM table_list                               /*要查询的表名称*/
    WHERE condition                            /*行条件*/
    GROUP BY grouping_columns        /*对结果分组*/
    HAVING condition                          /*分组后的行条件*/
          ORDER BY sorting_columns            /*对结果排序*/
          LIMIT offset_start, row_count         /*结果限定*/

  6.1、用一个例子来说明

 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);

 6.1 条件查询介绍
条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:
? =、!=、<>、<、<=、>、>=;
? BETWEEN…AND;
? IN(SET)/NOT IN(SET)
? IS NULL/IS NOT NULL
//---条件连接符
? AND; &&
? OR;  ||
? NOT; !

 6.2 查询性别为女,并且年龄小于50的记录
select * from stu where gender='female'  and age<50;
6.3 查询学号为S_1001,或者姓名为liSi的记录
select * from stu where sid='S_1001' or sname='liSi';
数据库中,sql语句不区分大小写 ,但是 数据区分大小写.

 6.4 查询学号为S_1001,S_1002,S_1003的记录

 select * from stu where sid='S_1001' or  sid='S_1002' or  sid='S_1003';
select * from stu where sid in('S_1001','S_1002','S_1003');
6.5 查询学号不是S_1001,S_1002,S_1003的记录
select * from stu where not (sid='S_1001' or  sid='S_1002' or  sid='S_1003');
select * from stu where sid not in('S_1001','S_1002','S_1003');
6.6 查询年龄为null的记录  
select * from stu where age=null;
null的特性: null不等于null 所以判断时应如下写法:
select * from stu where age is null;
6.7 查询年龄在20到40之间的学生记录
select * from stu where age >= 20 and age <= 40;
select * from stu where age between 20 and 40;
6.8查询性别非男的学生记录
select * from stu where gender!= 'male';
select * from stu where not gender='male';
select * from stu where gender not in ('male');
6.9 查询姓名不为null的学生记录
select * from stu where  sname is not null;
select * from stu where not  sname is  null;

  6.2、聚合函数

 聚合函数是用来做纵向运算的函数:
COUNT():统计指定列不为NULL的记录行数;
MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

  6.3、分组查询

        当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和,这说明要使用部分来分组。
1>查询每个部门的部门编号和每个部门的工资和:
select deptno,sum(sal) from emp group by deptno;
2>查询每个部门的部门编号以及每个部门的人数:
select deptno,count(ename) from emp group by deptno;
3>查询每个部门的部门编号以及每个部门工资大于1500的人数:
select deptno,count(ename) from emp where sal>1500 group by deptno ;
4>查询工资总和大于9000的部门编号以及工资和:
select deptno,sum(sal) from emp group by deptno having sum(sal)>9000;


你可能感兴趣的:(java,Web,数据库,mysql)