您的位置:首页 > 数据库 > MySQL

MySql学习记录1-mysql的基本操作之增删改

2017-10-14 23:13 591 查看
SQL-Structured Query Language结构化查询语言。

MySql的安装-解压版:

1、解压。

2、设置MySql的数据库目录,修改配置文件my.ini

[mysqld] 

basedir=E:\\myserver\\mysql-5.0.37-win32        (必须)

datadir=E:\\myserver\\mysql-5.0.37-win32\\data    (必须)

default-character-set=gbk  -(可选,建议不设置)

2、启动测试

命令行:/> mysqld –console

3、登录MySql

命令行:/> mysql -u root –p    (注意-u应该与root紧挨着)

4、增加用户可以选程访问,mysql.user表:

create user root identified by ‘1234’;   --创建用户

Grant all on *.* to ‘root’@’%’ with grant option; 授权

5、重新启动服务器,测试是否可以远程登录

6、安装mysql服务

命令行:/> mysqld –install

7、卸载服务

命令行:/> mysqld -remove

基本操作:

mysql –uroot –p1234 //登录

mysql>show databases; //显示所有已经存在的数据库

mysql>use test; //使用某个数据库

mysql>show tables; //显示当前数据库中的所有表

mysql>help; //显示

mysql>desc tableName; //显示表结构

导出数据库中的所有表:在命令行模式下:

shell/> mysqldump –uroot –p1234 –-databases dbName > d:\a\a.sql

导入:导入时,必须要先手工建立一个新的数据库:

mysql>use dbName;

Mysql>source d:\a\a.sql

或:

shell/>mysql –uroot –p1234 –D dbname < d:\a\a.sql (注意参数-D是大写)

MySql的数据类型:

查询Mysql的开发手册,查询data type可见所有的数据类型。

比较经常使用的数据类型为:

int、varchar、char、numeric(double,float)、text

Char与varchar的区别:

Char是定长数据,如果char(10)但里面只保存了1个字符,则它的长度仍然是10.-但Mysql对查询的结果进行了处理 ,所以使用legth无法判断它所占用的长度。

Varchar(10)时,如果里面只保存了1个字符,则它的长度为1,所以,varchar被称了可变长字符。

Char的取值范围为0-255

varchar的取值范围为0-65535.如果是UTF-8数据类型则可以保存0-21844字符。

Int和numeric:

Int类型不能保存小数位。

Numeric可以保存小数位。如numeric(4,2)则可以表示最大数据为:99.99。注意4是总位数,2是小数位数。

创建和修改表:

创建表:

Create table stud(

id int,

name varhcar(30)

);

创建时同时指定不能为空:

Create table tb(

     name varchar(20) not null

)

修改表:

Alter table stud

      add column sex char(1);  /*添加一个新的字段 */

Alter table stud

      drop column sex;  /* 删除sex字段*/

数据CURD:

字符类型的数据前后要添加’’单引号。
插入数据

没有指定列时,要给出完整数据,且要对应顺序:

Insert into stud values(1,’Tom’,’1’);

优化写入,指定列:

Insert into stud(id,name) values(1,’jack’);

查询数据:

Select * from stud; -- 通过*将所有列显示出来

查询指定的列:

Select id ,name from stud

另名:as

Select id as 编号,name as 姓名 from stud; //不建议使用中文

或是省去as关键字:

Select id 编号,name 姓名 from stud;

给表也取个别名:

Select s.id,s.name from stud as s;

修改数据:

Update stud set name=‘Jack’;

同时修改两个值:

Update stud set name=‘Rose’,id=22 where id=1;

在原值上面进行累加操作:

Update product set price=price*1.1  -所有商品的价格上涨10%
删除数据:

Delete from stud /*全部删除*/

Delete from stud where id=1; /*删除指定的行 */

也可以使用

TRUNCATE TABLE stud; //它与delete的区别是不记录操作日志,即无法恢复数据。

Where子句:

Select 字段 From 表名 where 条件 and  条件 or 条件 

Update table tableName set .. Where 条件

Delete from tableName where ….

条件查询:

where关键字。(Name=‘dd’ and age=33) or addr=‘BJ’

between X and Y关键字。 在什么之间

in关键字和not in.  In(‘….’,’aafad’,’afasdf’);

and和or关键字。

使用like实现模糊查询。%

通过is null判断是否为null。(要区分空字符串与null的区别)

演示:

1.创建数据库:

CREATE DATABASE IF NOT EXISTS abc CHARACTER SET utf8;
2.创建表

CREATE TABLE student(
sno VARCHAR(15) NOT NULL PRIMARY KEY,
sname VARCHAR(15) NOT NULL,
age INT,
address VARCHAR(30)
);

CREATE TABLE teacher(
tno AUTO_INCREMENT NOT NULL PRIMARY KEY,
tname VARCHAR(15) NOT NULL,
tsale NUMERIC(DOUBLE)
);

CREATE TABLE stud(
sno VARCHAR(15) NOT NULL PRIMARY KEY,
sname VARCHAR(15) NOT NULL,
age INT,
address VARCHAR(30)
);


3.修改表格:

ALTER TABLE stud DROP COLUMN sno;
ALTER TABLE stud ADD COLUMN sno INT PRIMARY KEY AUTO_INCREMENT;


4.插入数据

INSERT INTO stud VALUES('dragon1',21,'湖南邵阳1',1);
INSERT INTO stud(sname,age,address) VALUES('dragon2',21,'湖南邵阳2');


5.删除数据

DELETE FROM stud WHERE sno>=5;
DELETE FROM stud WHERE sno>=5 && sno<=8;
6.更新数据

UPDATE stud SET sname="龙" WHERE sno=4;
7.查询数据

SELECT * FROM student;
SELECT * FROM student WHERE sno>1002;
//使用as为字段取一个别名,as也可以省略
SELECT sno AS 学号,sname 姓名,age 年龄,address 地址 FROM student;

//复杂查询
SELECT * FROM student WHERE age>24;
SELECT * FROM student WHERE age>24 AND age<40;
SELECT * FROM student WHERE age BETWEEN 24 AND 40;[24,40]
SELECT * FROM student WHERE age<=24 OR age>40;
//选取age=21,23,25的student
SELECT * FROM student WHERE age=21 OR age=23 OR age=25;
SELECT * FROM student WHERE age IN(21,23,25);

//选取age!=21,23,25的student
SELECT * FROM student WHERE age NOT IN(21,23,25);

//选择地址为湖南开头的student,让他的age+1
SELECT * FROM student WHERE address LIKE'湖南%';
UPDATE student SET age=age+1 WHERE address LIKE'湖南%';

SELECT * FROM student WHERE sname LIKE 'd%' AND age<25;
//_表示前面一个字符的个数+1
SELECT * FROM student WHERE sname LIKE 'd_';
//名字中带a的
SELECT * FROM student WHERE sname LIKE '%a%';

//模糊查询LIKE  '%'通配所有字符   '_'通配单字符

SELECT * FROM stud WHERE sname LIKE '张%'; //姓张的学生
SELECT * FROM stud WHERE sname LIKE '张_'; //姓张,名为单字的学生
SELECT * FROM stud WHERE sname LIKE '张__'; //姓张,名为双字的学生
SELECT * FROM stud WHERE sname LIKE '%张%'; //姓名中含“张”字的学生
SELECT * FROM stud WHERE sname LIKE '%张%' AND age<24;
//要查询为null的要使用关键字 IS NULL
SELECT * FROM student WHERE age IS NULL;
//查询字段为空字符串的记录
SELECT * FROM student WHERE sname='';

如果显示内容时要让表头变成中文,用别名(AS可以省略)

SELECT * FROM stud;
SELECT sno,sname,age,saddress FROM stud;
SELECT sno AS 编号,sname AS 姓名,age,saddress FROM stud;
SELECT sno 编号,sname 姓名,age 年龄,saddress 地址 FROM stud; //省略AS

句型:

select 字段名 from 表名  where 条件1 and 条件2  or 条件3

update 表名  set 字段名1=值 [,字段名2=值] where 子句[in 子句] [between子句]

delete from 表名  where 子句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据库