mysql sql语句学习

登录、备份mysql、mysql帐号添加
mysql -u root  -h host -D DBname -p  登录数据库
mysqladmin -uroot -poldpass  password newpass
mysqldump -uroot -p  --opt scoo > web.sql  备份数据库
mysql -uroot -D test   < web.sql 还原数据库

grant all privileges on test.* to 'larry'@'192.168.1.*' identified by 'passwd' 添加新用户,并授权指定主机访问
SET PASSWORD FOR 'larry'@'192.168.1.*'=PASSWORD('webpass');
FLUSH PRIVILEGES;
基本sql命令:
desc dede_admin;  查看表结构
show databases;  查看所有的数据库
show tables;  查看所有的表
select * from dede_admin;  查询表里面所有内容
select id  from dede_admin;  查询表里面id那一列的所有内容
select * from dede_admin order by uname,company; 以用户名和公司排序
select name from dede_admin group by company; 以公司列排序查询name###group by语句用于结合合计函数,根据一个或多个列对结果集进行分组
select * from dede_admin where id<100; 查询表里面id小于100的内容
select * from dede_admin where id<>100; 查询表里面id不等于100的内容
select * from dede_admin where (id=1 or userid='admin') and username=larry; 查询添加or和and条件;
insert  into super select * from student where id=1;   查询student表里面一条记录插入到super表
create table sjk select * from student;    拷贝student表,并重命名为sjk表


create database scoo; 创建数据库
use scoo;
mysql> create table student(
    -> id int(16) not NULL auto_increment,
    -> name char(32),
    -> old int(12),
    -> hometown varchar(64),
    -> email char(64),
    -> hobby varchar(64)
    -> primary key (id));  创建一张表,并以id号为主键,设置主键不为空,并自动创建主键值

默认地,AUTOINCREMENT 的开始值是 1,每条新纪录递增 1。
要规定 "id"列以10起始且递增2,请把 autoincrement改为 AUTOINCREMENT(10,2)
修改表id为autoincrement

insert into student values(1,'larry',22,'xuchang','[email protected]','bbox');  插入一条数据
update student set hobby='bbox,play football' where id=1;  更新一条数据
delete from student where id=2;  删除表里面某条记录

delete  from dede_member;   删除表里面所有的数据,表结构、属性和索引都是完整的
select email  from student where name like 'larry';  搜索表里面包含larry的字段
select email  from student where name like not 'larry';  搜索表里面不包含larry的字段
select email  from student where name like 'larr%';  搜索表里面以larr开头的字段
select email  from student where name like '%rr%';  搜索表里面包含rr的字段

select old  from student where name in ('larry','wyy'); in操作符选取name为larry和wyy的字段
select * from student where id between '2' and '4';   between ....and  查询id号在2到4(包括问题不同数据库不一样)之间
alter table student add date int(16);  为表添加列
alter table student drop column date;  删除指定列
alter table student modify hobby char(64);  修改表列的类型

表的主键:
1、PRIMARY KEY 约束唯一标识数据库表中的每条记录。
2、主键必须包含唯一的值。
3、主键列不能包含 NULL 值。
4、每个表都应该有一个主键,并且每个表只能有一个主键。

如果表还没添加主键可用alter添加:
alter table student add primary key(id);
撤销主键:
alter table student drop primary key;

每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束
mysql> create table student(
    -> id int(16) not NULL auto_increment,
    -> name char(32),
    -> old int(12),
    -> hometown varchar(64),
    -> email char(64),
    -> hobby varchar(64),
    -> primary key (id),
    -> unique (id));  添加主键的uniq约束
如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束
mysql> create table student(
    -> id int(16) not NULL auto_increment,
    -> name char(32),
    -> old int(12),
    -> hometown varchar(64),
    -> email char(64),
    -> hobby varchar(64),
    -> primary key (id),
    -> unique (id)
    -> CONSTRAINT student_id UNIQUE (id,email));
如果表已经存在,则用alter修改
alter table student add ONSTRAINT student_id UNIQUE (id,email);
alter table student add UNIQUE (email);添加约束
撤销约束:
alter table student drop INDEX email;

表的外键:
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY
表的约束:
CHECK 约束用于限制列中的值的范围
mysql> create table student(
    -> id int(16) not NULL auto_increment,
    -> name char(32),
    -> old int(12),
    -> hometown varchar(64),
    -> email char(64),
    -> hobby varchar(64)
    -> CHECK (id>0));
alter table student  add CONSTRAINT old CHECK(0<old<200); 添加约束
alter table student drop CONSTRAINT old; 撤销约束

SQL函数:
select avg(old) from student;  avg函数查询平均年龄
select now(),max(old) from student;  now函数显示系统时间,max函数显示old列最大值
select count(old) from student;   count函数统计old列的行数
select sum(old) from student;     sum函数返回old列的总和

疑问部分:自己给mysql添加check约束后,约束竟然不生效,难道默认的数据库引擎MyISAM不支持约束?

查了下资料如下:

常用五类约束:
not null:非空约束,指定某列不为空
unique: 唯一约束,指定某列和几列组合的数据不能重复
primary key:主键约束,指定某列的数据不能重复、唯一
foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据
check:检查,指定一个表达式,用于检验指定数据
MySQL不支持check约束,但可以使用check约束,而没有任何效果;

你可能感兴趣的:(mysql,数据库,职场,sql语句,休闲)