Mysql的基本操作和注意点

原创 2018年04月17日 21:28:20

Mysql数据库基本操作

Mysql第一阶段:

第一阶段对于新手来说,主要是熟悉mysql中的语句有什么作用,这段时间主要在文本框中敲打mysql语句,然后在MySQL的运行框中运行,以此来检查自己所写的语句是否正确。

Mysql中的一些语句使用方法:

#查看所有的数据库

show databases;

注:Sql语句不区分大小写  但是严重区分中英文符号,不允许使用中文符号

#创建数据库

create database test1227;

#使用数据库

use test1227;

注:使用数据库时,千万不要忘了这句,新手很容易忘记。

#创建表   需要创建主键  主键是唯一的,不能为空  int(10):10代表的是数字长度

#若不定义长度,默认长度为11  primary key为主键(唯一标识) auto_increment:设置自增

#varchar:为字符串  默认长度为255  unique:唯一约束   not null 不为空约束

create table student(

id  int(10)primary key  auto_increment,

name varchar(20) unique,

age int(5) default 16,

sex char(2) not null

);

#查看表设计

desc student;

注:创建表之后,可以通过查看表设计,来检查创建的表是否满足需求

增:

#不按照字段添加   那么就需要按照表设计的字段顺序添加

insert into student values(2,'李四',21,'男');

 

#按照字段添加   必须主键设置自增,否者必须给主键赋值

insert into student(name,age,sex) values('王五',25,'女');

 

insert into student(name,sex) values('赵六','男');

insert into student(name,age,sex) values('小凳子',27,'男');

#添加多条数据

insert into student(name,age,sex) values('小红',22,'女'),('小华',26,'男'),('小白',29,'男');

删:

 

#删除表

drop table student;

 

#删除数据库

drop database test1227;

 

 

 

#删除 drop  与delete 的区别:

#drop 是删除表,表不存在  delete 是删除表中的数据,表仍然存在

delete from student where id = 1;

 

delete from student where sex = '男';

 

delete from student where sex='女' and age = 22;

#删除表中的所有数据,表存在

delete from student;

注:where这里是判断的意思

改:

#修改   切记:修改  set后面使用逗号分隔 而不是用and  只有where 条件语句后使用and  代表 并且

update student set name='小名',age = 26,sex='女' where id = 2;

update  studentset name='光头强' where name = '小红';

update student set age = 30 where name='王五' and sex = '女';

 

查:

查是数据库中的重点!

# * 代表的是所有字段  查看当前表中的所有数据

select * from student;

 

 

#只查询姓名和年龄 select  后为查询的字段  from  表

select name,age from student;

 

 

#查询年龄为26的学生信息

select id,name,age,sex from student where age = 26;

 

 

#查询年龄不是26的学生信息  != <>

select id,name,age,sex from student where age !=26;

select id,name,age,sex from student where age <>26;

 

select id,name,age,sex from student where age >=26;

 

 

#查询id 为偶数的学生信息

select id,name,age,sex from student where id %2=0;

#查询姓‘小’ 的学生名   %代表多个字符

select name from student where name like '小%';

 

#  _为一个字符

select name from student where name like '小__';

 

 

insert into student(name,age,sex) values('白居易',29,'男');

insert into student(name,age,sex) values('王白石',26,'男');

 

#like 模糊查询

#代表开头有“白”

select name from student where name like '白%';

#代表结尾有“白”

select name from student where name like '%白';

#代表字符中间有“白”

select name from student where name like '%白%';

 

 

#查询年龄在26-29之间(包含26,29)的学生信息

select id,name,age,sex from student where age between26 and 29;

 

#查询id  包含 4,8,13,14的学生信息

 

select id,name,age,sex from student where  id in (13,8,4,14);

 

#分页  第一个参数为索引 ,通过索引得到页数   第二个参数为每次显示的条数

select id,name,age,sex from student limit 4,2;

 

 

#将学生的年龄从小到大排序  order by 为排序本身就有从小到大的功能  asc小-大   desc:大-小  

select id,name,age,sex from student order by age  desc;

 

 

#聚合函数 count(统计总数)  sum (求和) avg (平均值) max(最大值)  min(最小值)

 

select count(*) from student;

 

select count(id) from student;

#字段和表都可以定义别名

select count(1) from student; 定义别名  英语不需要定义单引号  中文需要定义单引号

 

#统计男 女分别的人数

select count(id) as '总数',sex as se fromstudent group by sex;

 

select count(id) '总数',sex '性别' from student group by sex;

 

 

#统计男女人数大于3的人数 having为条件语句必须与group by联合使用 不能单独使用  where   只有有条件判断都可以使用

select count(id) '总数',sex '性别' from student group by sex having 总数 >3;

 

 

select count(id) co ,sex '性别' from student group by sex having co >3;

 

 

select sum(age) from student;

 

select avg(age) from student;

 

select max(age) from student;

 

select min(age) from student;

 

以上就是对数据的增删改查,这些操作都是对数据库中的数据操作,下面,我们来介绍对于表设计的修改

表设计修改:

#添加字段

alter table student add address varchar(50) not null;

 

 

#将name修改为username

alter table student change name username varchar(20);

 

#sex char(2) 改为varchar(2)

alter table student change sex sex varchar(2);

 

 

#将age 放到address 后面

alter table student modify age int(5) after address;

 

#删除address

alter table student drop address;

 

 

#将student表名修改为stu

alter table student rename stu;

 

接下来就来说下多表连接,多张表之间的联系

#表关系:  一对一  一对多   多对多

主键关联主键  等值连接

select t.name,s.username,s.age,s.sex from teachert,stu s where s.id = t.id;

 

#交叉连接

 

select t.name,s.username,s.age,s.sex from teachert  cross join stu s on s.id = t.id;

 

 

#内连接:避免笛卡尔积,并且在数据量多的情况下 提高查询的效率

 

select t.name,s.username,s.age,s.sex from teachert  inner join stu s on s.id = t.id

 

 

#以上三种连接 获取的都为表的交集

 

 

#外连接:左连接   右连接 

#左连接  查询左边表的所有数据  右边只查询关联id 相同的数据

select t.name,s.username,s.age,s.sex from teachert  left join stu s on s.id = t.id;

 

 

select t.name,s.username,s.age,s.sex from stu s rightjoin teacher t on s.id = t.id;

 

#一张表的外键是另外一张表的主键  外键可以创建多个  但是主键只能创建一个  主键的值为唯一  外键的值可以重复

 

#设置外键  必须先给主键的表创建了数据才能给外键表进行添加数据   ondelete cascade :级联删除

#设置了级联删除  既可以删除主表数据又可以删除外键表数据,一旦删除主表数据,外键关联的数据一并删除

alter  tablestudent add constraint foreign key(tid) references teacher(id)  on delete cascade;

 

#创建视图,视图为一张虚拟的表,创建视图的目的是为了提高查询的效率,当一张表中有很多字段时,而在查询过程中不需要那么多的字段,那么可以通过视图创建一张虚拟的表

#表数据与原表的数据完全一致

 

create view stu_view as select id,name from student;

Linux应用与ubuntu基本操作

-
  • 1970年01月01日 08:00

顺序栈的一些简单操作(一些需要注意的事项)

其他没什么说的,只想说一下输出栈内元素 不要直接用stack->t或者将它赋给另一个stack,因为是指针类型。一改都改,我在这用n装下stack->t,然后进行判断,什么时候为-1就输出完成。 ...
  • qq_35691619
  • qq_35691619
  • 2017-10-25 23:14:19
  • 91

顺序链表的常用操作实现及注意事项

在知乎看了轮子哥,又加强了我对编程的热情,编程方面还是个雏,一步一步来吧。 自己理解顺序结构有几点好处,查找方便,不好之处便是删除添加移动的元素挺多的。 需要注意的两点, 删除 添加时 主...
  • J3286056707
  • J3286056707
  • 2016-11-15 01:23:01
  • 261

MySQL AUTO_INCREMENT及一些注意事项

MySQL AUTO_INCREMENT及一些注意事项MySQL的中AUTO_INCREMENT类型的属性用于为一个表中记录自动生成ID功能,可在一定程度上代替Oracle,PostgreSQL等数据...
  • nickshen3
  • nickshen3
  • 2007-06-21 13:58:00
  • 2157

MySQL数据库设计需要注意的点

1.为什么字段尽可能用NOT NULL,而不是NULL Mysql官网文档: “NULL columns require additional space in the row to reco...
  • fangwei1235
  • fangwei1235
  • 2013-02-05 12:14:17
  • 886

进行mysql压力测试需要注意的几点

1、填充测试数据比物理内存还要大,至少超过innodb_buffer_pool_size 值,不能将数据全部装载到内存中,除非你的本意就想测试全内存状态下的MySQL性能。 2、每轮测试完成后,都重...
  • yanzongshuai
  • yanzongshuai
  • 2015-08-11 22:53:25
  • 828

Mysql中auto increment的基本特性

创建数据表时,经常会出现auto_increment这个词,下面就来了解一下它吧。MySQL的中AUTO_INCREMENT类型的属性用于为一个表中记录自动生成ID功能,可在一定程度上代替Oracle...
  • qwe5810658
  • qwe5810658
  • 2017-07-06 18:27:02
  • 163

线上mysql使用注意点

做业务开发的同学常常需要去拖库看一些字段去找bug。但拖库的时候往往会遇到一些问题甚至导致线上库挂了,那么我们需要注意哪些呢? 如果有离线库尽量用离线库 很多情况下会做一个离线库给大数据的同学...
  • weixin_41571449
  • weixin_41571449
  • 2018-01-13 19:52:04
  • 152

MYSQL查询SQL的注意事项和一些技巧总结

在编写查询SQL的时候,有一些技巧可以提升查询性能,总结如下: not exists 代替 not in 尽量避免not in (子查询)的查询,如果是not in (列表)倒是可以接受的,因为no...
  • KuaiLeShiFu
  • KuaiLeShiFu
  • 2015-11-01 14:41:17
  • 1199

Oracle转Mysql需要注意的地方

一、nvl()函数: (1)oracle中的nvl()函数: 语法: nvl(expr1,expr2) 含义:: 如果expr1为空那么返回expr2,如果expr1值不为空,则返回expr...
  • tuesdayma
  • tuesdayma
  • 2017-11-01 15:20:53
  • 350
收藏助手
不良信息举报
您举报文章:Mysql的基本操作和注意点
举报原因:
原因补充:

(最多只允许输入30个字)