数据库1

mysql库的操作

show databases//查看所有数据库
information_schema
mysql
performance_schema//这三个库不能随便删
create database mydbl(数据库的名)//创建数据库
show create database mydb1//查看mydb1的创建方式
//创建mydb2库,指定字符集为gbk;   两种写法
create database mydb2 character set gbk;
create database mydb2 charset gbk;
//修改mydb1的字符集为utf8
alter database mydb1 character set utf8;
//要求对输入数据进行检查,要求为utf8格式
create database mydb3 character set utf8 collate utf8_general_ci; 
//删除数据库mydb2
drop database mydb2

mysql表的操作

//创建表
//建表需要先选库  //两种写法
use mydb1;
create table tl(id int ,name varchar(30));
create table mydb1.tl(id int ,name varchar(30));
//增加一个字段
alter table tl add sal int;
也可以写成 alter table tl add column sal int;
//显示表
desc tl;
修改字段属性
alter table tl modify column name varchar(40);//column可加可不加
更改字段名字同时改类型
alter table tl change comm comm2 double;//将comm改为comm2  并且类型改了
//删除表字段
alter table tl drop column comm2;
//查看表是怎么创建的  创建方式
show create table tl;
显示
CREATE TABLE `tl` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(40) DEFAULT NULL,
  `sal` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
engine= InonoDB是默认引擎,高速模式,支持事务,默认情况下不开启。
表名大小写敏感 字段不区分大小写 库名大小写敏感
//重命名表  需要加table 关键字
rename table tl to t2;
//删除表  mysql 不支持回收站,直接删除,不能加purge
drop table t2;

mysql数据的操作

先创建一个表 然后往里面插数据
create table employee(id int ,name varchar(20),sex int,birthday date,salary double ,entry_date date,resume text);
插数据两种方式
insert into employee values(1,"叶井",1,'1983-04-27',15000,'2012-06-24','一个大牛');
insert into employee(id,name,sex,birthday,salary,entry_date,resume) values(1,"傅红雷",1,'1984-02-22',10000,'2012-07-24','一个中牛');
查询表中的数据
select * from employee;
修改表中的数据
update employee set resume='一个小牛'where id=3;
删除表中的数据
delete from employee where name ='陆小佳';

mysql组函数相关

练习题
create table student(id int ,name varchar(20),chinese int ,english int ,math int);
-- insert into student(id,name,chinese,english,math) values(1,'黄真',80,85,90);
-- insert into student(id,name,chinese,english,math) values(2,'归辛树',90,95,95);
-- insert into student(id,name,chinese,english,math) values(3,'李寻欢',80,96,96);
-- insert into student(id,name,chinese,english,math) values(4,'叶芽',81,97,85);
-- insert into student(id,name,chinese,english,math) values(5,'袁承志',85,84,90);
-- insert into student(id,name,chinese,english,math) values(6,'何红药',92,85,87);
-- insert into student(id,name,chinese,english,math) values(7,'何铁手',75,81,80);
-- insert into student(id,name,chinese,english,math) values(8,'夏雪宜',77,80,79);
-- insert into student(id,name,chinese,english,math) values(9,'任我行',95,85,85);
-- insert into student(id,name,chinese,english,math) values(10,'岳不群',94,85,84);
-- alter table student add class_id int;
--修改表中的数据 
--比如把id号小于5的class_id 改成1
update  student set class_id=1 where id<=5;
或者update student set class_id=ceil(id/5);//ceil取整函数;
--求各班平均成绩
select avg(english),class_id from student group by class_id; //avg求平均,group by 以什么为分组
--求各班总成绩
select sum(chinese+math+english),class_id from student group by class_id;
--求总成绩大于1300的班级
select sum(chinese+math+english),class_id from student group by class_id having sum(chinese+math+english)>1300;

mysql日期函数_数字函数_字符函数
select 3+5*20 from dual;//dual   确实是一张表.是一张只有一个字段,一行记录的表. 
                                 2.习惯上,我们称之为'伪表'.因为他不存储主题数据.
                                 3. 他的存在,是为了操作上的方便.因为select 都是要有特定对象的.
--查看当前时间
select now() from dual;
函数原型 DATE_ADD(date2,INTERVAL d_value d_type)在date2中加上日期或时间
         DATE_SUB(date2,INTERVAL d_value d_type)在date2上减去一个时间
昨天 今天 明天
select date_add(now(),interval -1 day),now(),date_add(now(),interval 1 day)from dual;
ADDTIME(date2,time_interval)  将time_interval加到date2
加一分钟
select addtime(now(),'0:1:0'),now()from dual;
字符串相关函数
select concat('hello','mysql','haha','hehe')from dual;//concat将字符串连接起来
utf字符串,汉子占3个字节
select length('hello中国') from dual;
数字相关函数
CONV(number 2,from_base,to_base);进制转换
select conv(10,10,2),conv(10,10,16)from dual;

mysql转换函数

在mysql中没有to_date函数,进行日期转换需要使用date_format()来代替。
select  date_format('1982-11-17','%Y-%m-%d')from dual;//%Y大写的Y是四位1982 %y小写的是两位82  %m是两位比如07 %c是一位比如7
字符串转日期
select str_to_date('2013-6-04 05:14:15' , '%Y-%c-%d %h:%i:%s') from dual;
select addtime(str_to_date('2013-6-04 05:14:15' , '%Y-%c-%d %h:%i:%s'),'0:1:0') from dual;

mysql多表查询

练习题
create database if not exists scott character set utf8;//if not exists防止出错的 如果存在就不创建不存在就创建
use scott;
create table bonus//创建bonus表
(
  ename VARCHAR(10),
  job   VARCHAR(9),
  sal   int,
  comm  int
);
create table dept//创建dept表
(
  deptno int not null,
  dname  VARCHAR(14),
  loc    VARCHAR(13)
);
alter table dept add constraint PK_DEPT primary key (deptno);修改表时添加主键  ALTER TABLE <数据表名> ADD PRIMARY KEY(<列名>);如果不指定CONSTRAINT symbol,MYSQL会自动生成一个名字
create table emp//创建emp表
(
  empno    int not null,
  ename    VARCHAR(10),
  job      VARCHAR(9),
  mgr      int,
  hiredate DATE,
  sal      int,
  comm     int,
  deptno   int
);
alter table emp add constraint PK_EMP primary key (empno);//添加主键
alter table emp add constraint FK_DEPTNO foreign key (deptno)  references dept (deptno);//添加外键
create table salgrade//创建salgrade表
(
  grade int,
  losal int,
  hisal int
);
insert into dept (deptno, dname, loc)//往dept表中插入数据
values (10, 'ACCOUNTING', 'NEW YORK'),
(20, 'RESEARCH', 'DALLAS'),
(30, 'SALES', 'CHICAGO'),
(40, 'OPERATIONS', 'BOSTON');
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)//往emp表中插入数据
values (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, null, 20),
(7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30),
(7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30),
(7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, null, 20),
(7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30),
(7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, null, 30),
(7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, null, 10),
(7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, null, 20),
(7839, 'KING', 'PRESIDENT', null, '1981-11-17', 5000, null, 10),
(7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30),
(7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, null, 20),
(7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, null, 30),
(7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, null, 20),
(7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, null, 10);
insert into salgrade (grade, losal, hisal)//往salgrade表中插入数据
values (1, 700, 1200),
(2, 1201, 1400),
(3, 1401, 2000),
(4, 2001, 3000),
(5, 3001, 9999);
显示:员工号,员工姓名,部门编号,部门名称
select e.empno,e.ename,e.deptno,d.dname from dept d,emp e where e.deptno=d.deptno;//多表查询
select e.empno,e.ename,e.deptno,d.dname from dept d inner join emp e on e.deptno=d.deptno;//sql99的标准 内连接写法
显示:员工号,姓名,薪水,薪水级别
select e.empno,e.ename,e.sal,s.grade 
  from emp e,salgrade s 
  where e.sal>=s.losal
  and e.sal<=s.hisal;
显示:部门编号,部门名称,人数
select d.deptno,d.dname,count(e.empno)
  from emp e,dept d
  where e.deptno=d.deptno
  group by d.deptno,d.dname;//上述操作仍然缺少40部门 因为统计的人数没有
 //sql99不支持(+)连接写法
select d.deptno,d.dname,count(e.empno)//这么写全 外连接
  from emp e right outer join dept d//这个写right是看dept d在逗号右面//from dept d left outer join emp e
  on e.deptno=d.deptno
  group by d.deptno,d.dname;
//内连接  外连接 inner outer可以省略
显示xx'boss is xx
select concat(e.ename,'''s boss is',b.ename)//自连接
  from emp e,emp b
  where e.mqr=b.empno//上述结果会缺少最大的老板
select concat(e.ename,'''s boss is',b.ename)
  from emp e left join emp b
  on e.mqr=b.empno;//改完之后大老板那行显示NULL;
select concat(e.ename,'''s boss is',ifnull(b.ename,'his wife'))//ifnull 如果大老板的老板为空显示hiswife
  from emp e left join emp b
  on e.mqr=b.empno; 
select * from emp order by sal ;按工资排序正着排 从小往大
select * from emp order by sal desc;倒序排  从大往小
select * from emp order by sal desc limit 3;//取工资前三名
select * from emp order by sal desc limit m,n;//m代表跳过的记录数,n代表取的记录数
select * from emp order by sal desc limit 4,4;//从第4个下一个也就是跳到第五个 然后再数四个  5到8名的工资

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,698评论 0 44
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,169评论 0 9
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 4,725评论 0 30
  • 一、MongoDB数据库基础 1.什么是MongoDB数据库 MongoDB 是由C ++语言编写的,是一个基于分...
    比卡_没有丘阅读 2,249评论 0 1
  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    SnowflakeCloud阅读 40,946评论 0 48