MySql学习笔记

 Install MySql on Windows:

https://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html 

https://dev.mysql.com/doc/refman/5.7/en/windows-create-option-file.html

connector-net-programming-connecting-connection-string Note: charset=ut8; is very important!

Example: server=ali.centos.test.com;database=tuotuo;uid=uid;pwd=pwd;charset=utf8;

http://stackoverflow.com/questions/21618015/how-to-connect-to-mysql-database

https://dev.mysql.com/downloads/connector/net/ Download DotNet mysql connector. Or using NuGet: > Install-Package MySql.Data

using MySql.Data; using  MySql.Data.SqlClient;   var conn = new MySqlConnection(connectionString);

Install MySQL on CentOS-7

https://www.linode.com/docs/databases/mysql/how-to-install-mysql-on-centos-7 

https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 Now, it called MariaDB. It works.

https://www.howtoforge.com/apache_php_mysql_on_centos_7_lamp 

Set passwords for the MySQL root account: {{mysql_secure_installation}}

#To check your hostname run:	
> hostname
> hostname -f
#Update your system:
sudo yum update
#Install and Start MariaDB
sudo yum install mariadb-server
#Enable MariaDB to start on boot and then start the service:
sudo systemctl enable mariadb
sudo systemctl start mariadb

  

在远程机器全新安装MYSQL, 在连接时有时会遇到一些问题: 

1、报错:1130-host ... is not allowed to connect to this MySql server

http://www.cnblogs.com/xyzdw/archive/2011/08/11/2135227.html

2、之后有遇到:SSL not enabled 的错误:

http://stackoverflow.com/questions/27202499/mysql-workbench-connection-ssl-not-enable

http://blog.itpub.net/15480802/viewspace-751574

防止在MYSQL中插入重复记录: http://www.cnblogs.com/zeroone/archive/2012/04/18/2454728.html

https://linuxize.com/post/how-to-change-mysql-user-password/   修改密码Change Password

ALTER USER 'user-name'@'localhost' IDENTIFIED BY 'NEW_USER_PASSWORD';
FLUSH PRIVILEGES;

VERION:

select @@version;

select @@hostname;

MySQL 命令行

第一招、mysql服务的启动和停止
net stop mysql
net start mysql

第二招、登陆mysql
语法如下: mysql -u 用户名 -p 用户密码
键入命令mysql -u root -p,回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:
mysql>
注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP

第三招、增加新用户
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"
如,增加一个用户user1密码为password1,让其可以在本机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:
grant select,insert,update,delete on *.* to user1@localhost Identified by "password1";

http://dev.mysql.com/doc/refman/5.5/en/create-user.html

create user 'username'@'%' identified by 'Password';

grant ALL PRIVILEGES on dbname.* to 'username'@'%' [identitified by 'Password'];
如果希望该用户能够在任何机器上登陆mysql,则将localhost改为"%"
如果你不想user1有密码,可以再打一个命令将密码去掉。
grant select,insert,update,delete on mydb.* to user1@localhost identified by "";

再刷新一下privileges>> flush privileges

也可以直接这样子创建一个用户: insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));

查看所有用户:select host,user from mysql.user;

删除账户及权限:>drop user 用户名@'%';

        >drop user 用户名@ localhost; 

第四招: 操作数据库
登录到mysql中,然后在mysql的提示符下运行下列命令,每个命令以分号结束。
1、 显示数据库列表。
show databases;
缺省有两个数据库:mysql和test。 mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作。
2、 显示库中的数据表:
use mysql;
show tables;
3、 显示数据表的结构:
describe 表名;
4、 建库与删库:
create database 库名;
drop database 库名;
5、 建表:
use 库名;
create table 表名(字段列表);
drop table 表名;
6、 清空表中记录:
delete from 表名;
7、 显示表中的记录:
select * from 表名;

第五招、导出和导入数据
1. 导出数据:
mysqldump --opt test > mysql.test
即将数据库test数据库导出到mysql.test文件,后者是一个文本文件
如:mysqldump -u root -p123456 --databases dbname > mysql.dbname
就是把数据库dbname导出到文件mysql.dbname中。
2. 导入数据:
mysqlimport -u root -p123456 < mysql.dbname。
不用解释了吧。
3. 将文本数据导入数据库:
文本数据的字段数据之间用tab键隔开。
use test;
load data local infile "文件名" into table 表名;
1:使用SHOW语句找出在服务器上当前存在什么数据库:
mysql> SHOW DATABASES;
2:2、创建一个数据库MYSQLDATA
mysql> CREATE DATABASE MYSQLDATA;
3:选择你所创建的数据库
mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)
4:查看现在的数据库中存在什么表
mysql> SHOW TABLES;
5:创建一个数据库表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6:显示表的结构:
mysql> DESCRIBE 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="f" where name='hyq';
13:备份数据库mysqldump -u root 库名>xxx.data14:

例2:连接到远程主机上的MYSQL
  假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:   

  mysql -h110.110.110.110 -uroot -pabcd123   

  (注:u与root可以不用加空格,其它也一样)  

  3、退出MYSQL命令: exit

转自:http://www.iteye.com/topic/469868

例如:如果xhkdb数据库存在,尝试存取它:

命令:create table ( [,.. ]);

mysql> CREATE TABLE `testa` (
-> `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
-> `name` varchar(20) DEFAULT NULL ,
-> PRIMARY KEY (`id`)
-> ) ENGINE=MyISAM AUTO_INCREMENT=65 DEFAULT CHARSET=utf8;

2、获取表结构
命令: desc 表名,或者show columns from 表名
mysql> DESCRIBE MyClass
mysql> desc MyClass;
mysql> show columns from MyClass;

1)、查询所有行
mysql> select * from MyClass order by id limit 0,2;

7、修改表中数据:update 表名 set 字段=新值,… where 条件

mysql> update MyClass set name=”Mary” where id=1;

8、在表中增加字段:
命令:alter table 表名 add字段 类型其他;

例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0
mysql> alter table MyClass add passtest int(4) default ”0”

Rename Column:
alter table ad change ImageUrl ThumbImg varchar(500);
9、更改表名:
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改为YouClass
mysql> rename table MyClass to YouClass;


CREATE TABLE mytable (
mydate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
....)

-- https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
DROP TABLE IF EXISTS `api_requests`;
CREATE TABLE `api_requests` (
    api_request_key bigint NOT NULL auto_increment key,
    initiator varchar(50),
    request_type varchar(50),
    initiator_ip varchar(20),
    request_id varchar(50),
    request_url varchar(500),
    request_headers varchar(4000),
    request_body nvarchar(8000),
    create_date datetime
);

CREATE INDEX ix_api_requests_request_id on api_requests (request_id DESC);
CREATE INDEX ix_api_requests_request_url on api_requests (request_url ASC);
CREATE INDEX ix_api_requests_create_date on api_requests (create_date DESC);


DROP TABLE IF EXISTS `api_responses`;
CREATE TABLE `api_responses` (
    api_response_key int auto_increment key,
    api_request_key bigint NOT NULL,
    status_code varchar(20),
    response_headers varchar(4000),
    response_body nvarchar(8000),
    create_date datetime
);

CREATE INDEX ix_api_responses_request_key on api_responses (api_request_key DESC);

ALTER TABLE `api_responses` ADD CONSTRAINT `fk_api_responses_request_key` 
	FOREIGN KEY (`api_request_key`) REFERENCES `api_requests`(`api_request_key`);
    
-- ALTER TABLE api_responses DROP  FOREIGN KEY `fk_api_responses_request_key` ;

  



ConnectionString in .NET(needs to download mysql connector for .NET):
<add name="" connectionString="Server=localhost;port=3306;Database=ddname;Uid=user1;Pwd=111111;" providerName="MySql.Data.MySqlClient"/>

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

TODO:

MySQL support insert multiple records as following:

Insert into table_name (f1, f2) values(v1, v11), (v2, v21), (v3, v31);

Q: if not exists?

http://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html


日期相关操作:

STR_TO_DATE('2010-10-15 10:00:00', '%Y-%m-%d %H:%i:%s')

MYSQL DATE and DateTime:  http://www.cnblogs.com/jinzhenshui/archive/2009/06/18/1505880.html


test account for wechat development
原文地址:https://www.cnblogs.com/swlin/p/3823561.html