mysql big tables_mysql常见命令操作

MySql常用命令总结

1:使用SHOW语句找出在服务器上当前存在什么数据库:(大小写一样)

mysql> SHOW DATABASES; (展示数据库时候用databases)

2:2、创建一个数据库MYSQLDATA (展示一个数据时候用database)

创建带字符编码的数据库create database mydb character set utf8;(注意mysql中是utf8;不是utf-8)

mysql> CREATE DATABASE MYSQLDATA; (删除用drop database dbname)

3:选择你所创建的数据库

mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!,当然没有;也提示成功)

4:查看现在的数据库中存在什么表

mysql> SHOW TABLES;

5:创建一个数据库表

mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

6:显示表的结构:

mysql> DESCRIBE(DESC) MYTABLE;

7:往表中加入记录

mysql> insert into MYTABLE values (”hyq”,”M”);

8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)

mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;

9:导入.sql文件命令(例如D:/mysql.sql)

mysql>use database;

mysql>source d:/mysql.sql;

10:删除表

mysql>drop TABLE MYTABLE;

11:清空表

mysql>delete from MYTABLE;

12:更新表中数据

mysql>update MYTABLE set sex=”man” where name=’jack’;

--------------------------------------------

----------------字段操作----------------------

添加字段:alter table tablename add column age int;

删除一个字段:alter table tablename DROP COLUMN new2;

插入一个字段默认为:alter table tablename add column age int default 0;

修改一个字段的类型 alter table tablename MODIFY new1 VARCHAR(10);

修改一个字段的名称,此时一定要重新指定该字段的类型 alter table user CHANGE new1 new4 int;

添加主键: alter table tablename add primary key(col)

删除主键: alter table tablename drop primary key(col)

----------------自增长---------------

CREATE TABLE class

(

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

username VARCHAR(15) NOT NULL

)AUTO_INCREMENT = 100;从100开始

可在建表时可用“AUTO_INCREMENT=n”选项来指定一个自增的初始值。

可用alter table table_name AUTO_INCREMENT=n命令来重设自增的起始值。

插入数据insert into text values(null,'jack');要用null

没用AUTO_INCREMENT = 100;表示默认从1开始

----------------函数-------------------------

select now(),current_date()

select * from tablename where field1 like ’%value%’ --查找特定格式的数据,注意中间是

求和:select sum(field1) as sumvalue from tablename

平均:select avg(field1) as avgvalue from tablename

最大:select max(field1) as maxvalue from tablename

最小:select min(field1) as minvalue from tablename

排序:select * from tablename order by field1,field2 [desc]

选择前十条记录:select * from tablename limit 10; (注意不要用top)

分页:select * from tablename limit 2,4 ( 即取出第3条至第6条,4条记录)

select ASCII('A'); //对应65

返回二进制值N的一个字符串表示select bin(8);//8的二进制位1000

------------------------------------

导入.sql文件命令(例如D:/daoru.sql)所以可以直接在文本中写,在导入cmd中执行。。

create table daoru

(

name varchar(20),

password varchar(20)

);

insert into daoru values('JACK','123');

执行mysql>source d:/mysql.sql;

----------------------------

//补充

查询

过滤表中的重复数据

select distinct username from tablename(过滤掉重名的)

查询数学成绩分数为100.90,44分的人

select * from student where math in(100,90,44)

//商品分类

select username,sum(math) from tablename group by username(根据一样的username归为一组)

where后面不能跟合计函数,要用having

select username,sum(math) from tablename group by username having sum(math)>200

创建带字符编码的数据库create database mydb character

set utf8;(注意mysql中是utf8;不是utf-8)

查看数据库的信息show create database mydb(可以看数据库编码等信息)

如果数据库语句创建成功了,怎么添加编码为utf8

alter database mydb character set utf8;

重命名表名

alter table aa change column name username varchar(20)(name改为username)

备份数据库表中的数据

mysqldump -u用户名 -p密码 数据库名 >文件名.sql(备份带那里window命令)

恢复数据库

source 文件名.sql

//演示

备份

mysqldump -uroot -p123 mydb >D://mydb.sql (保存带了D:mysql.sql中)(数据库到文件)

恢复(先删掉数据库,在恢复)

要恢复库,要先创建库,因为只能恢复数据,不能恢复库

mysql -uroot -p123 mydb

//数据库约束,主键,自增长,非空,不重复,外键

create table a

(

name varchar(20) not null, //非空

password int unique //不能重复

);

//外键约束

比如(老公,老婆关系管理系统)

老公表

id name

1 jack

2 xilin

老婆表

id name husbandId(这列叫外键,该值来自于外面的数据,一定要加外键约束)

1 lucy 2 (外键数据来自老公表)

2 mily 1

create table husband

(

id int primary key auto_increment,

name varchar(20)unique

);

create table wife

(

id int primary key auto_increment,

name varchar(20)unique,

husbandId int,

constraint husbandId_FK foreign key(husbandId) references husband(id)

);

//constraint (约束名)foreign key(约束那个)references(参考那个表的那个值)

//数据库中表的设计

-----------一对多,多对一----------------------

部门关系管理系统(一个部门对于多个员工,多个员工对于一个部门)

//部门 员工

Department Employee

String id; String id,

String name, String name,double price;

Set employee=new HashSet(); Department department;

一对多的设计,那么部门数据如何往数据库里面存呢?

Department d=new Department();

d.setId(1);

d.setname("开发部");

Employee e=new Employee();

e.setId(1);

e.setName("xiaoming"); //部门对象

e.setPrice(100);

Employee e1=new Employee();

e1.setId(2); //员工数据

e1.setName("xiaoge");

e1.setPrice(200);

d.add(e1);

d.add(e2); //把员工数据增加到部门

----------------------思路----------------------

设计表的时候先不要考虑引用关系,设计基本表,在一对多的多的方那加入外键约束就行

department表

id name

1 开发部

Employee表

id name price department_id

1 xiaoming 100 1

2 xiaoge 200 1

------------多对多对象-------------------------

教学管理系统

Teacher对象

String id,

String name;

String price,

Set student=new HashSet();//老师保存学生信息

Student对象

String id,

String name;

Set teacher=new HashSet();//学生保存老师信息

//先不要考虑引用关系,先设计基本信息表

Teacher表

id name price

1 jack 3244

Student表

id name

1 lucy

2 mark

---------设计中介表-Teacher_Student---------

Teacher_Student 表

teacher_id(外键,来自老师id) student_id(外键,来自学生id)

1 1

1 2

-----------------------------------------------

create table teacher

(

id int primary key,

name varchar(20),

price int

);

create table student

(

id int primary key,

name varchar(20)

);

create table teacher_student

(

teacher_id int,

student_id int,

primary key(teacher_id,student_id),

constraint teacher_id_FK foreign key(teacher_id) references teacher(id),

constraint student_id_FK foreign key(student_id) references student(id)

);

create table teacher_student

(

teacher_id int,

student_id int,

primary key(teacher_id,student_id) //联合主键

constraint teacher_id_FK foreign key(teacher_id) references teacher(id)//外键约束

constraint student_id_FK foreign key(student_id) references student(id)//外键约束

)

----------一对一关系,必须有主从关系(人可以无身份证,身份证不能没人)-----------

身份证管理系统

person类

String id;

String name

IdCard idcard;

IdCard类

String id;

String city;

person p;

person p=new person();

p.setId(1);

p.setName("lin");

IdCard c=new IdCard();

c.setId(1);

c.setCity("nanjing");

p.setCard(c);

----------------------------

person表

id name

1 jack

2 lucy

IdCard表

id city person_id(外键约束,unique,not null约束),但是person表已经是unique,not null,这变设计外键就行了

1001 nanjing 1

1021 beijing 2

create table person

(

id int primary key,

name varchar(20)

);

create table idcard

(

id int primary key,

city varchar(10),

constraint id_FK foreign key(id)references person(id)

);

-----------------------------

自连接的表,可以实现无限循环表(京东分类表:如电器类->电脑->平板。。)

person p

id name parent_id

1 林大大

2 林中中 1

3 林小小 2 (家族遗传)

create table myperson

(

id int primary key,

name varchar(20),

parent_id int,

constraint parent_id_FK foreign key(parent_id)references myperson(id)

)

---------级联删除-------------------

create database department_employee character set utf8;

use department_employee;

create table department

(

id int primary key,

name varchar(20)

);

create table employee

(

id int primary key,

name varchar(20),

salary double,

employee_id int,

constraint empoyee_id_FK foreign key(employee_id)references department(id)on delete set null

//如果是on delete set null的话,删除department主表的时候,从表employee_id置为空

//如果是on delete cascade,删除主表的时候,从表也删除(要小心)

);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值